emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] managing repetitive code in export & tangling


From: Sebastian Miele
Subject: Re: [O] managing repetitive code in export & tangling
Date: Tue, 08 Oct 2019 20:53:54 +0000
User-agent: mu4e 1.3.5; emacs 26.3

Matt Price <address@hidden> writes:

> In my lectures i often have simple examples that build progressively
> over several slides. In order to use klipse properly, but also for
> clarity, I gneerally repeat variable declarations from slide to slide,
> so for instance:
>
> ** Making Lists (Arrays)
>
> +#NAME: js-array-historians
> #+BEGIN_SRC js
> let historians= ["Edward Gibbon", "Leopold von Ranke", "Edward Said", "Joan
> Scott"];
> #+END_SRC
>
> ** Repetition: While Loops
> #+NAME: js-while-hist
> #+begin_src js
> <<js-array-historians>>
> let i = 0;
>
> while (i < historians.length) {
>     console.log(historians[i] + " was a historian.");
>     i+=1;
>   }
> #+end_src
>
> There might then be a sequence of another 5 or 6 slides in which the same
> "historians" array is bound to the same value and used as an example.
>
> This works fine on its own. However, I would also like to tangle all this
> code to a single file per lecture so students can download a git repo and
> play with it directly in a real text editor. Unfortunately, javascript will
> error out if a ~let~ bound variable is  redeclared in the same scope.  I'm
> wondering if there's any way to specify that a noweb reference only be
> included one time in a tangled file. Or if there are cleverer workarounds
> that folks can suggest!

I have not used the exporting facilities of Org by myself, yet. However,
if what you sketch above does already produce expected results, then
something like the following should solve your problem. (The single
angle-bracketed stuff has to be replaced by the appropriate header
args.)

** Making Lists (Arrays)

#+NAME: js-array-historians
#+BEGIN_SRC js <do export, do tangle>
  let historians= ["Edward Gibbon", "Leopold von Ranke", "Edward Said", "Joan 
Scott"];
#+END_SRC

** Repetition: While Loops

#+NAME: js-while-hist
#+BEGIN_SRC js <dont export, do tangle>
  let i = 0;
  while (i < historians.length) {
      console.log(historians[i] + " was a historian.");
      i+=1;
    }
#+END_SRC

#+BEGIN_SRC js <do export, dont tangle>
  <<js-array-historians>>
  <<js-while-hlist>>
#+END_SRC

Best wishes
Sebastian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]