Изменена структура модулей

This commit is contained in:
Victor 2016-09-16 16:25:12 +03:00
parent ba60a498d7
commit 29d40a554f
81 changed files with 110 additions and 130 deletions

View File

@ -34,7 +34,7 @@
native <methods>; native <methods>;
} }
-keep public class * implements com.annimon.ownlang.lib.modules.Module -keep public class * implements com.annimon.ownlang.modules.Module
# Soft obfuscation # Soft obfuscation
-keep public class * { -keep public class * {

View File

@ -1,13 +0,0 @@
package com.annimon.ownlang.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.PACKAGE)
public @interface Modules {
Class[] modules();
}

View File

@ -1,17 +0,0 @@
@Modules(modules = {
canvas.class,
canvasfx.class,
date.class,
files.class,
functional.class,
http.class,
json.class,
math.class,
ounit.class,
robot.class,
std.class,
types.class
})
package com.annimon.ownlang.lib.modules;
import com.annimon.ownlang.annotations.Modules;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules;
/** /**
* *

View File

@ -1,6 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.canvas;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics; import java.awt.Graphics;

View File

@ -1,7 +1,8 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.canvasfx;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import static com.annimon.ownlang.lib.Converters.*; import static com.annimon.ownlang.lib.Converters.*;
import java.awt.Dimension; import java.awt.Dimension;
import java.lang.reflect.Modifier; import java.lang.reflect.Modifier;

View File

@ -1,7 +1,8 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.date;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;

View File

@ -1,7 +1,8 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.files;
import com.annimon.ownlang.exceptions.ArgumentsMismatchException; import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.BufferedWriter; import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Value; import com.annimon.ownlang.lib.Value;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import static com.annimon.ownlang.lib.Converters.*; import static com.annimon.ownlang.lib.Converters.*;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import static com.annimon.ownlang.lib.Converters.*; import static com.annimon.ownlang.lib.Converters.*;
import javax.swing.JComponent; import javax.swing.JComponent;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import static com.annimon.ownlang.lib.Converters.*; import static com.annimon.ownlang.lib.Converters.*;
import javax.swing.JFrame; import javax.swing.JFrame;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import static com.annimon.ownlang.lib.Converters.*; import static com.annimon.ownlang.lib.Converters.*;
import javax.swing.JLabel; import javax.swing.JLabel;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import javax.swing.JPanel; import javax.swing.JPanel;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.lib.MapValue; import com.annimon.ownlang.lib.MapValue;
import java.awt.LayoutManager; import java.awt.LayoutManager;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions.forms; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Value; import com.annimon.ownlang.lib.Value;

View File

@ -1,8 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.forms;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.lib.modules.functions.forms.Components; import com.annimon.ownlang.modules.Module;
import com.annimon.ownlang.lib.modules.functions.forms.LayoutManagers;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import javax.swing.BoxLayout; import javax.swing.BoxLayout;
import javax.swing.JFrame; import javax.swing.JFrame;

View File

@ -1,9 +1,9 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.lib.FunctionValue; import com.annimon.ownlang.lib.FunctionValue;
import com.annimon.ownlang.lib.Functions; import com.annimon.ownlang.lib.Functions;
import com.annimon.ownlang.lib.Variables; import com.annimon.ownlang.lib.Variables;
import com.annimon.ownlang.lib.modules.functions.*; import com.annimon.ownlang.modules.Module;
/** /**
* *

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.functional;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,9 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.http;
import com.annimon.ownlang.lib.Functions; import com.annimon.ownlang.lib.Functions;
import com.annimon.ownlang.lib.modules.functions.http_download; import com.annimon.ownlang.modules.Module;
import com.annimon.ownlang.lib.modules.functions.http_http;
import com.annimon.ownlang.lib.modules.functions.http_urlencode;
/** /**
* *

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.http;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import java.io.IOException; import java.io.IOException;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.http;
import com.annimon.ownlang.exceptions.ArgumentsMismatchException; import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.http;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,6 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.java;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.jdbc;
import com.annimon.ownlang.exceptions.ArgumentsMismatchException; import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
@ -11,6 +11,7 @@ import com.annimon.ownlang.lib.StringValue;
import com.annimon.ownlang.lib.Types; import com.annimon.ownlang.lib.Types;
import com.annimon.ownlang.lib.Value; import com.annimon.ownlang.lib.Value;
import com.annimon.ownlang.lib.Variables; import com.annimon.ownlang.lib.Variables;
import com.annimon.ownlang.modules.Module;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URL; import java.net.URL;

View File

@ -1,8 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.json;
import com.annimon.ownlang.lib.Functions; import com.annimon.ownlang.lib.Functions;
import com.annimon.ownlang.lib.modules.functions.json_decode; import com.annimon.ownlang.modules.Module;
import com.annimon.ownlang.lib.modules.functions.json_encode;
/** /**
* *

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.json;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.json;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,6 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.math;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import java.util.function.DoubleBinaryOperator; import java.util.function.DoubleBinaryOperator;
import java.util.function.DoubleFunction; import java.util.function.DoubleFunction;
import java.util.function.DoubleUnaryOperator; import java.util.function.DoubleUnaryOperator;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.ounit;
import com.annimon.ownlang.Console; import com.annimon.ownlang.Console;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
@ -8,6 +8,7 @@ import com.annimon.ownlang.lib.NumberValue;
import com.annimon.ownlang.lib.StringValue; import com.annimon.ownlang.lib.StringValue;
import com.annimon.ownlang.lib.Types; import com.annimon.ownlang.lib.Types;
import com.annimon.ownlang.lib.Value; import com.annimon.ownlang.lib.Value;
import com.annimon.ownlang.modules.Module;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;

View File

@ -1,9 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.robot;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.lib.modules.functions.robot_exec; import com.annimon.ownlang.modules.Module;
import com.annimon.ownlang.lib.modules.functions.robot_fromclipboard;
import com.annimon.ownlang.lib.modules.functions.robot_toclipboard;
import java.awt.AWTException; import java.awt.AWTException;
import java.awt.Robot; import java.awt.Robot;
import java.awt.event.InputEvent; import java.awt.event.InputEvent;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.robot;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.ArrayValue; import com.annimon.ownlang.lib.ArrayValue;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.robot;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;
import com.annimon.ownlang.lib.StringValue; import com.annimon.ownlang.lib.StringValue;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.robot;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,7 +1,8 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.socket;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
import io.socket.client.IO; import io.socket.client.IO;
import io.socket.client.Socket; import io.socket.client.Socket;
import java.net.URISyntaxException; import java.net.URISyntaxException;

View File

@ -1,8 +1,8 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.Main; import com.annimon.ownlang.Main;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.lib.modules.functions.*; import com.annimon.ownlang.modules.Module;
/** /**
* *

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.Console; import com.annimon.ownlang.Console;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.ArgumentsMismatchException; import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.ArrayValue; import com.annimon.ownlang.lib.ArrayValue;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import java.util.Iterator; import java.util.Iterator;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;
import com.annimon.ownlang.lib.StringValue; import com.annimon.ownlang.lib.StringValue;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.ArgumentsMismatchException; import com.annimon.ownlang.exceptions.ArgumentsMismatchException;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.ArrayValue; import com.annimon.ownlang.lib.ArrayValue;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.Console; import com.annimon.ownlang.Console;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;
import com.annimon.ownlang.lib.NumberValue; import com.annimon.ownlang.lib.NumberValue;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.lib.Arguments; import com.annimon.ownlang.lib.Arguments;
import com.annimon.ownlang.lib.Function; import com.annimon.ownlang.lib.Function;

View File

@ -1,4 +1,4 @@
package com.annimon.ownlang.lib.modules.functions; package com.annimon.ownlang.modules.std;
import com.annimon.ownlang.exceptions.TypeException; import com.annimon.ownlang.exceptions.TypeException;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;

View File

@ -1,6 +1,7 @@
package com.annimon.ownlang.lib.modules; package com.annimon.ownlang.modules.types;
import com.annimon.ownlang.lib.*; import com.annimon.ownlang.lib.*;
import com.annimon.ownlang.modules.Module;
/** /**
* *

View File

@ -1,6 +1,6 @@
package com.annimon.ownlang.parser.ast; package com.annimon.ownlang.parser.ast;
import com.annimon.ownlang.lib.modules.Module; import com.annimon.ownlang.modules.Module;
import java.lang.reflect.Method; import java.lang.reflect.Method;
/** /**
@ -9,7 +9,7 @@ import java.lang.reflect.Method;
*/ */
public final class UseStatement extends InterruptableNode implements Statement { public final class UseStatement extends InterruptableNode implements Statement {
private static final String PACKAGE = "com.annimon.ownlang.lib.modules."; private static final String PACKAGE = "com.annimon.ownlang.modules.%s.%s";
private static final String INIT_CONSTANTS_METHOD = "initConstants"; private static final String INIT_CONSTANTS_METHOD = "initConstants";
public final Expression expression; public final Expression expression;
@ -23,7 +23,7 @@ public final class UseStatement extends InterruptableNode implements Statement {
super.interruptionCheck(); super.interruptionCheck();
try { try {
final String moduleName = expression.eval().asString(); final String moduleName = expression.eval().asString();
final Module module = (Module) Class.forName(PACKAGE + moduleName).newInstance(); final Module module = (Module) Class.forName(String.format(PACKAGE, moduleName, moduleName)).newInstance();
module.init(); module.init();
} catch (Exception ex) { } catch (Exception ex) {
throw new RuntimeException(ex); throw new RuntimeException(ex);
@ -33,7 +33,7 @@ public final class UseStatement extends InterruptableNode implements Statement {
public void loadConstants() { public void loadConstants() {
try { try {
final String moduleName = expression.eval().asString(); final String moduleName = expression.eval().asString();
final Class<?> moduleClass = Class.forName(PACKAGE + moduleName); final Class<?> moduleClass = Class.forName(String.format(PACKAGE, moduleName, moduleName));
final Method method = moduleClass.getMethod(INIT_CONSTANTS_METHOD); final Method method = moduleClass.getMethod(INIT_CONSTANTS_METHOD);
if (method != null) { if (method != null) {
method.invoke(this); method.invoke(this);

View File

@ -1,12 +1,12 @@
package com.annimon.ownlang.utils; package com.annimon.ownlang.utils;
import com.annimon.ownlang.annotations.Modules;
import com.annimon.ownlang.lib.Functions; import com.annimon.ownlang.lib.Functions;
import com.annimon.ownlang.lib.MapValue; import com.annimon.ownlang.lib.MapValue;
import com.annimon.ownlang.lib.Types; import com.annimon.ownlang.lib.Types;
import com.annimon.ownlang.lib.Value; import com.annimon.ownlang.lib.Value;
import com.annimon.ownlang.lib.Variables; import com.annimon.ownlang.lib.Variables;
import com.annimon.ownlang.lib.modules.Module; import com.annimon.ownlang.modules.Module;
import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
@ -22,20 +22,26 @@ import org.json.JSONObject;
public final class ModulesInfoCreator { public final class ModulesInfoCreator {
public static void main(String[] args) throws InstantiationException, IllegalAccessException { private static final String MODULES_PATH = "src/main/java/com/annimon/ownlang/modules";
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
final Class<Module> clazz = Module.class; // get classloader for package final Class<Module> clazz = Module.class; // get classloader for package
final List<ModuleInfo> moduleInfos = new ArrayList<>(); final List<ModuleInfo> moduleInfos = new ArrayList<>();
final Package modulesPackage = Package.getPackage("com.annimon.ownlang.lib.modules"); String[] moduleNames = Arrays.stream(new File(MODULES_PATH).listFiles())
final Modules annotation = modulesPackage.getAnnotation(Modules.class); .filter(p -> p.isDirectory())
for (Class moduleClass : annotation.modules()) { .map(p -> p.getName())
.toArray(String[]::new);
for (String moduleName : moduleNames) {
final String moduleClassPath = String.format("com.annimon.ownlang.modules.%s.%s", moduleName, moduleName);
Class<?> moduleClass = Class.forName(moduleClassPath);
Functions.getFunctions().clear(); Functions.getFunctions().clear();
Variables.variables().clear(); Variables.variables().clear();
final Module module = (Module) moduleClass.newInstance(); final Module module = (Module) moduleClass.newInstance();
module.init(); module.init();
final ModuleInfo moduleInfo = new ModuleInfo(moduleClass.getSimpleName()); final ModuleInfo moduleInfo = new ModuleInfo(moduleName);
moduleInfo.functions.addAll(Functions.getFunctions().keySet()); moduleInfo.functions.addAll(Functions.getFunctions().keySet());
moduleInfo.constants.putAll(Variables.variables()); moduleInfo.constants.putAll(Variables.variables());
moduleInfo.types.addAll(listValues(moduleClass)); moduleInfo.types.addAll(listValues(moduleClass));