Got it, I'm going to work on updating my PR to enable the proposed changes.
I'll keep this thread updated as I move forward.

but one approach might be to break up this method
> https://github.com/apache/tomee-site-generator/blob/master/src/main/java/org/apache/tomee/website/Sources.java#L117

Yes, I actually took that advice you made since the beginning of the
thread. I have to be honest, I had to untie a couple of lambdas into loops
while I was studying and learning the code.
I need to improve my functional skills to refactor that code but in the
meantime, I'm moving forward and will tackle the code cleanup and sharpness
once we all agree on the functionality itself.

El mar., 8 ene. 2019 a las 19:14, David Blevins (<david.blev...@gmail.com>)
escribió:

> > On Jan 8, 2019, at 12:32 PM, César Hernández Mendoza <
> cesargu...@gmail.com> wrote:
> >
> > tomee-8.0 (latest)
> > Documentation
> > Examples [es]
> > Javadoc
> >
> > tomee-7.1
> > Examples [es] [fr]
> > Javadoc
>
> We could still do that regardless of the url pattern change.  There's a
> little bit of jumping already happening on the main /docs.html page.
> Particularly:
>
>  - http://tomee.apache.org/docs.html           ... links to
>  - http://tomee.apache.org/tomee-8.0/docs/     ... here and skips over
>  - http://tomee.apache.org/tomee-8.0/          ... this page which does
> exist
>
> The only way to get to "tomee-8.0/index.html" is via URL hack.  But it's
> there in case we want to point people to it.  If we wanted tot add
> breadcrumbs, we're ready.
>
> There could and should be a "tomee-8.0/es/index.html" page.
>
> I haven't looked at the PR since this weekend, but one approach might be
> to break up this method
> https://github.com/apache/tomee-site-generator/blob/master/src/main/java/org/apache/tomee/website/Sources.java#L117
>
> This is pseudo code, but something a little like this:
>
>     public void prepare() {
>         // copy the non-version specific stuff over
>         try {
>             IO.copyDirectory(mainSource, jbake);
>         } catch (IOException e) {
>             throw new RuntimeException(e);
>         }
>
>         // download all the external repos
>         sources.stream()
>                 .flatMap(source -> source.getRelated().stream())
>                 .peek(source -> source.setDir(new File(repos,
> source.getName())))
>                 .forEach(Repos::download);
>
>         // download all our repos and process javadoc
>         final Javadocs javadocs = new Javadocs(this);
>         sources.stream()
>                 .peek(source -> source.setDir(new File(repos,
> source.getName())))
>                 .peek(Repos::download)
>                 .forEach(javadocs::prepare);
>         ;
>
>         // for each source, collect the extensions and process them
>         // each gets its own identical layout
>         // perhaps empty string "" implies english
>         for (Source source : sources) {
>             for (String lang : source.findLanguages()) {
>
>                 final Docs docs = new Docs(this, lang);
>                 final Examples examples = new Examples(this, lang);
>                 final VersionIndex versionIndex = new VersionIndex(this,
> lang);
>
>                 // this logic now knows what language it needs to look for
> and collect and process
>                 sources.stream()
>                         .peek(docs::prepare)
>                         .peek(examples::prepare)
>                         .peek(versionIndex::prepare)
>                         .forEach(Sources::done);
>             }
>         }
>
>         // create the big magical index across all projects, versions and
> languages
>         // we can try to keep it on one page for as long as possible
>         // it will eventually get too big, but we're not there yet
>
>         VersionsIndex.prepare(this);
>     }
>
> Then we make sure anything we add in that second set of loops always
> handles internationalization.  Now it's docs and examples.  Tomorrow it
> could include presentations, video links, who knows.
>
> I'm sure that second set of loops could be done with Streams.  I don't
> know that I could type that into an email window with confidence :)
>
>
> -David
>
>

-- 
Atentamente:
César Hernández Mendoza.

Reply via email to