oneis 2.0.3-java → 2.0.4-java

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b68f3277dbcaef02ed9fb1386d07890d556d5fa1
4
- data.tar.gz: 9829008f1daebd4bc1dba87dde7d89adb2f29753
3
+ metadata.gz: 1d1ef4ecef67240a4415a9b2b4f7b621454e9b98
4
+ data.tar.gz: fd3413e5f159e192bb2ccd4aea7f5965bdb1bd82
5
5
  SHA512:
6
- metadata.gz: c22f7f5300f2919e7b8b15f1715dc2c284cf3438edfb062fd2080201ddd80a67f3df21ebf4d4723fb9a05c20a3ea069c989d701055d75002d1d18df1eb3d3c89
7
- data.tar.gz: 7c19c276060296924d354f26569d46a0fcd59164d6816172a46987b2005e0f8f621f3b9d008b66d4533d129beb76b75eead8f8a4c04f099009095c10e4a9d077
6
+ metadata.gz: 77535631e1bf9d948766c4e3e4910bd63160cfe12c7f400dcb7d182348978a5e4a13b59e65918dec2a6044f17d434e41a3015e4270acafe874f684fc24f9fd53
7
+ data.tar.gz: 60078eeca4ffd2bf63d9c8e95506c402ceac322044e993072d50a58ed37fb742151e57b7475e7b5a0fdce388928e955c77d94b17ef2afa018aaea42fed6f68e6
@@ -26,7 +26,7 @@ module PluginTool
26
26
  "displayName": "#{plugin_name.split('_').map {|e| e.capitalize} .join(' ')}",
27
27
  "displayDescription": "TODO Longer description of plugin",
28
28
  "installSecret": "#{install_secret}",
29
- "apiVersion": 3,
29
+ "apiVersion": 4,
30
30
  "load": [
31
31
  "js/#{plugin_name}.js"
32
32
  ],
@@ -54,17 +54,20 @@ __E
54
54
  File.open("#{plugin_name}/test/#{plugin_name}_test1.js",'w') do |file|
55
55
  file.write(<<__E)
56
56
 
57
- T.test(function() {
57
+ t.test(function() {
58
58
 
59
59
  // For documentation, see
60
60
  // http://docs.oneis.co.uk/dev/plugin/tests
61
-
62
- T.assert(true);
63
-
61
+
62
+ t.assert(true);
63
+
64
64
  });
65
65
 
66
66
  __E
67
67
  end
68
+ File.open("#{plugin_name}/requirements.schema",'w') do |file|
69
+ file.write("\n\n\n")
70
+ end
68
71
  puts <<__E
69
72
 
70
73
  Plugin #{plugin_name} has been created. Run
data/lib/run.rb CHANGED
@@ -26,6 +26,7 @@ require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/local_config.rb"
26
26
  require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/manifest.rb"
27
27
  require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/auth.rb"
28
28
  require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/server.rb"
29
+ require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/schema_requirements.rb"
29
30
  require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/syntax_checking.rb"
30
31
  require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/notifications.rb"
31
32
  require "#{ONEIS_PLUGIN_ROOT_DIR}/lib/plugin.rb"
@@ -0,0 +1,63 @@
1
+
2
+ module PluginTool
3
+
4
+ class SchemaRequirements
5
+ IGNORE_LINE = /\A\s*(\#.+)?\z/m # comment or blank line
6
+ OBJECT_FORMAT = /\A(?<kind>\S+)\s+(?<code>[a-zA-Z0-9_:-]+)\s*(as\s+(?<name>[a-zA-Z0-9_]+))?\s*\z/m
7
+
8
+ SCHEMA_LOCALS = {
9
+ "type" => "T",
10
+ "attribute" => "A",
11
+ "aliased-attribute" => "AA",
12
+ "qualifier" => "Q",
13
+ "label" => "Label",
14
+ "group" => "Group"
15
+ }
16
+
17
+ def initialize(filename)
18
+ # Define the special attributes by default
19
+ @schema_names = {"A" => {
20
+ "Parent" => true,
21
+ "Type" => true,
22
+ "Title" => true
23
+ }}
24
+ return unless File.exist?(filename)
25
+ File.open(filename) do |file|
26
+ file.each do |line|
27
+ if (line !~ IGNORE_LINE) && (match = OBJECT_FORMAT.match(line))
28
+ kind = SCHEMA_LOCALS[match[:kind]] || 'UNUSED'
29
+ @schema_names[kind] ||= {}
30
+ name = match[:name]
31
+ if name && !name.empty?
32
+ @schema_names[kind][name] = true
33
+ end
34
+ end
35
+ end
36
+ end
37
+ @schema_names.delete('UNUSED')
38
+ end
39
+
40
+ def locals
41
+ @schema_names.keys.dup
42
+ end
43
+
44
+ FIND_USE_REGEXP = Regexp.new("\\b(#{SCHEMA_LOCALS.values.join('|')})\\.([a-zA-Z0-9]+)\\b")
45
+
46
+ def report_usage(js)
47
+ report = []
48
+ js.split(/\r?\n/).each_with_index do |line, index|
49
+ line.scan(FIND_USE_REGEXP) do
50
+ kind = $1
51
+ name = $2
52
+ lookup = @schema_names[kind]
53
+ unless lookup && lookup.has_key?(name)
54
+ report << "line #{index+1}: Schema name #{kind}.#{name} isn't declared in requirements.schema\n\n"
55
+ end
56
+ end
57
+ end
58
+ report.empty? ? nil : report.join
59
+ end
60
+ end
61
+
62
+ end
63
+
@@ -40,11 +40,12 @@ module PluginTool
40
40
  kind = (file =~ /\A(\w+)\//) ? $1 : file
41
41
  # Is this file referenced?
42
42
  report = nil
43
- extra_globals = []
44
43
  unless kind != 'js' || plugin_json['load'].include?(file)
45
44
  puts "\nWARNING: #{plugin_dir}/plugin.json doesn't mention #{file} in the load directive.\n"
46
45
  report = "Couldn't check file - not mentioned in plugin.json"
47
46
  else
47
+ schema_requirements = (api_version < 4) ? nil : SchemaRequirements.new("#{plugin_dir}/requirements.schema")
48
+ extra_globals = schema_requirements ? schema_requirements.locals.dup : []
48
49
  # Load the file
49
50
  js = File.open("#{plugin_dir}/#{file}") { |f| f.read }
50
51
  if api_version < 3
@@ -53,22 +54,25 @@ module PluginTool
53
54
  extra_globals << plugin_json["pluginName"];
54
55
  end
55
56
  else
56
- if kind == 'js'
57
+ if kind == 'js' || kind == 'test'
57
58
  extra_globals << plugin_json["pluginName"]
58
59
  extra_globals << 'P'
59
60
  locals = plugin_json["locals"]
60
61
  if locals
61
62
  locals.each_key { |local| extra_globals << local }
62
63
  end
63
- elsif kind == 'test'
64
- extra_globals << plugin_json["pluginName"]
65
- extra_globals << 'P'
64
+ end
65
+ if kind == 'test'
66
+ extra_globals << 't'
66
67
  end
67
68
  # global.js requires server side syntax checking, but doesn't have any extra globals, not even the plugin name.
68
69
  kind = 'js' if kind == 'global.js'
69
70
  end
70
71
  # Do syntax checking
71
- report = @@syntax_tester.call(@@cx, @@javascript_scope, @@javascript_scope, [js, kind, JSON.generate(extra_globals)])
72
+ lint_report = @@syntax_tester.call(@@cx, @@javascript_scope, @@javascript_scope, [js, kind, JSON.generate(extra_globals)])
73
+ schema_report = schema_requirements ? schema_requirements.report_usage(js) : nil
74
+ report = [lint_report, schema_report].compact.join("\n\n")
75
+ report = nil if report.empty?
72
76
  end
73
77
  report
74
78
  end
@@ -1 +1 @@
1
- 6be56b5a02
1
+ e96173eff2
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
3
3
  files = Dir.glob("#{root_dir}/**/*.*").map { |x| x[root_dir.length + 1, x.length]}
4
4
 
5
5
  s.name = 'oneis'
6
- s.version = '2.0.3'
7
- s.date = '2015-02-20'
6
+ s.version = '2.0.4'
7
+ s.date = '2015-04-10'
8
8
  s.summary = "ONEIS Tools"
9
9
  s.description = "ONEIS Developer Tools"
10
10
  s.authors = ["ONEIS"]
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oneis
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.0.4
5
5
  platform: java
6
6
  authors:
7
7
  - ONEIS
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-20 00:00:00.000000000 Z
11
+ date: 2015-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: jruby-openssl
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: 0.8.7
20
14
  requirement: !ruby/object:Gem::Requirement
21
15
  requirements:
22
16
  - - '>='
23
17
  - !ruby/object:Gem::Version
24
18
  version: 0.8.7
19
+ name: jruby-openssl
25
20
  prerelease: false
26
21
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: json
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
24
  - - '>='
32
25
  - !ruby/object:Gem::Version
33
- version: 1.7.7
26
+ version: 0.8.7
27
+ - !ruby/object:Gem::Dependency
34
28
  requirement: !ruby/object:Gem::Requirement
35
29
  requirements:
36
30
  - - '>='
37
31
  - !ruby/object:Gem::Version
38
32
  version: 1.7.7
33
+ name: json
39
34
  prerelease: false
40
35
  type: :runtime
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.7.7
41
41
  description: ONEIS Developer Tools
42
42
  email: client.services@oneis.co.uk
43
43
  executables:
@@ -66,6 +66,7 @@ files:
66
66
  - lib/plugin.rb
67
67
  - lib/plugin_tool.rb
68
68
  - lib/run.rb
69
+ - lib/schema_requirements.rb
69
70
  - lib/server.rb
70
71
  - lib/syntax_checking.rb
71
72
  - lib/uglifyjs/parse-js.js