Android Open Source - sres S Res






From Project

Back to project page sres.

License

The source code is released under:

Apache License

If you think the Android project sres listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package me.tatarka.sres;
/* w  w w . j  ava  2s .  c  o  m*/
import com.google.common.base.CaseFormat;
import me.tatarka.sres.ast.RootView;
import me.tatarka.sres.impl.SResCodeLayoutGenerator;
import me.tatarka.sres.impl.SResLayoutParser;
import me.tatarka.sres.impl.SResXmlLayoutGenerator;
import me.tatarka.sres.util.PathTransformer;

import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;

/**
 * Created by evan on 2/27/14.
 */
public class SRes {
    private LayoutParser parser;
    private LayoutGenerator xmlGenerator;
    private LayoutGenerator codeGenerator;

    public SRes() {
        this(new SResLayoutParser(), new SResXmlLayoutGenerator(), new SResCodeLayoutGenerator());
    }

    public SRes(LayoutParser parser, LayoutGenerator xmlGenerator, LayoutGenerator codeGenerator) {
        this.parser = parser;
        this.xmlGenerator = xmlGenerator;
        this.codeGenerator = codeGenerator;
    }

    public void generate(Reader reader, SResOutput xmlOutput, SResOutput codeOutput) throws IOException {
        RootView view = parser.parse(reader);
        xmlGenerator.generate(view, xmlOutput);
        codeGenerator.generate(view, codeOutput);
    }

    public void generateAll(final String appPackageName, final Path inputDir, final Path xmlOutputDir, final Path codeOutputDir, final DirectoryStream.Filter<Path> filter) throws IOException {
        Files.walkFileTree(inputDir, new SimpleFileVisitor<Path>() {
            @Override
            public FileVisitResult visitFile(Path inputPath, BasicFileAttributes attrs) throws IOException {
                if (filter.accept(inputPath)) {
                    Path xmlOutputPath = newXmlOutputPath(inputPath, inputDir, xmlOutputDir);
                    Path codeOutputPath = newCodeOutputPath(inputPath, inputDir, codeOutputDir);

                    Files.createDirectories(xmlOutputPath.getParent());
                    Files.createDirectories(codeOutputPath.getParent());

                    try (Reader reader = Files.newBufferedReader(inputPath);
                         Writer xmlFileWriter = Files.newBufferedWriter(xmlOutputPath);
                         Writer codeFileWriter = Files.newBufferedWriter(codeOutputPath)) {

                        String packageName = toPackageName(inputPath, inputDir);
                        SourceInfo xmlSourceInfo = new SourceInfo(xmlOutputPath, packageName, appPackageName);
                        SourceInfo codeSourceInfo = new SourceInfo(xmlOutputPath, packageName, appPackageName);

                        SResOutput xmlOutput = new SResOutput(xmlSourceInfo, xmlFileWriter);
                        SResOutput codeOutput = new SResOutput(codeSourceInfo, codeFileWriter);

                        generate(reader, xmlOutput, codeOutput);
                    }
                }
                return FileVisitResult.CONTINUE;
            }
        });
    }

    public void generateAll(String appPackageName, Path inputDir, Path xmlOutputDir, Path codeOutputDir) throws IOException {
        generateAll(appPackageName, inputDir, xmlOutputDir, codeOutputDir, new DirectoryStream.Filter<Path>() {
            @Override
            public boolean accept(Path entry) throws IOException {
                return entry.toString().endsWith(".sres");
            }
        });
    }

    private String toPackageName(Path path, Path inputDir) {
        return PathTransformer.of(inputDir.relativize(path).getParent())
                .extension("")
                .toString().replace("/", ".");
    }

    private Path newXmlOutputPath(Path path, Path inputDir, Path outputDir) {
        return PathTransformer.of(path)
                .extension("xml")
                .mirror(inputDir, outputDir)
                .toPath();
    }

    private Path newCodeOutputPath(Path path, Path inputDir, Path outputDir) {
        return PathTransformer.of(path)
                .extension("java")
                .changeNameCase(CaseFormat.LOWER_UNDERSCORE, CaseFormat.UPPER_CAMEL)
                .mirror(inputDir, outputDir)
                .toPath();
    }
}




Java Source Code List

me.tatarka.sres.AbstractTrackable.java
me.tatarka.sres.Bindable.java
me.tatarka.sres.ChangeTracker.java
me.tatarka.sres.FileFilter.java
me.tatarka.sres.LayoutGenerator.java
me.tatarka.sres.LayoutParser.java
me.tatarka.sres.LayoutSelectorHelper.java
me.tatarka.sres.LayoutSelector.java
me.tatarka.sres.ListView.java
me.tatarka.sres.Main.java
me.tatarka.sres.ObservableAdapter.java
me.tatarka.sres.ObservableArrayList.java
me.tatarka.sres.ObservableListViewHelper.java
me.tatarka.sres.ObservableList.java
me.tatarka.sres.ObservablePagerAdapter.java
me.tatarka.sres.SResBaseVisitor.java
me.tatarka.sres.SResLexer.java
me.tatarka.sres.SResOutput.java
me.tatarka.sres.SResParser.java
me.tatarka.sres.SResVisitor.java
me.tatarka.sres.SRes.java
me.tatarka.sres.SourceInfo.java
me.tatarka.sres.ThreadHandlerImpl.java
me.tatarka.sres.ThreadHandlerProvider.java
me.tatarka.sres.ThreadHandler.java
me.tatarka.sres.Trackable.java
me.tatarka.sres.ViewPager.java
me.tatarka.sres.ast.Attribute.java
me.tatarka.sres.ast.Binding.java
me.tatarka.sres.ast.Child.java
me.tatarka.sres.ast.Converter.java
me.tatarka.sres.ast.Include.java
me.tatarka.sres.ast.RootView.java
me.tatarka.sres.ast.View.java
me.tatarka.sres.idea.SResFileTypeFactory.java
me.tatarka.sres.idea.SResFileType.java
me.tatarka.sres.idea.SResFile.java
me.tatarka.sres.idea.SResIcons.java
me.tatarka.sres.idea.SResLanguage.java
me.tatarka.sres.idea.SResLexer.java
me.tatarka.sres.idea.SResParserDefinition.java
me.tatarka.sres.idea._SResLexer.java
me.tatarka.sres.idea.psi.SResElementType.java
me.tatarka.sres.idea.psi.SResTokenType.java
me.tatarka.sres.impl.SResCodeLayoutGenerator.java
me.tatarka.sres.impl.SResLayoutParser.java
me.tatarka.sres.impl.SResVisitor.java
me.tatarka.sres.impl.SResXmlLayoutGenerator.java
me.tatarka.sres.impl.WriterCodeWriter.java
me.tatarka.sres.property.BooleanProperty.java
me.tatarka.sres.property.ByteProperty.java
me.tatarka.sres.property.CharProperty.java
me.tatarka.sres.property.DoubleProperty.java
me.tatarka.sres.property.FloatProperty.java
me.tatarka.sres.property.IntProperty.java
me.tatarka.sres.property.LongProperty.java
me.tatarka.sres.property.Property.java
me.tatarka.sres.property.ShortProperty.java
me.tatarka.sres.sample.MainActivity.java
me.tatarka.sres.sample.MyListItemView.java
me.tatarka.sres.sample.MyListItem.java
me.tatarka.sres.sample.MyMainView.java
me.tatarka.sres.sample.MyModel.java
me.tatarka.sres.sample.MyView.java
me.tatarka.sres.util.PathTransformer.java