shift-lang 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,9 +42,17 @@ module Shift
42
42
  case this_statement
43
43
 
44
44
  when :model_definition_statement
45
+ if num_tabs != 0
46
+ @clean = false
47
+ puts "Error at line #{line_number} character 1 : #{line}"
48
+ end
45
49
  model = Builder::DBModel.new(statement[:model_definition_statement][:model_name])
46
50
 
47
51
  when :model_attribute_definition_statement
52
+ if num_tabs != 1
53
+ @clean = false
54
+ puts "Error at line #{line_number} character 1 : #{line}"
55
+ end
48
56
  model_attribute = statement[:model_attribute_definition_statement]
49
57
  model.add_attribute(model_attribute[:attribute_name], model_attribute[:attribute_type])
50
58
 
@@ -53,14 +61,28 @@ module Shift
53
61
  add_model model
54
62
  end
55
63
 
64
+ if num_tabs != 0
65
+ @clean = false
66
+ puts "Error at line #{line_number} character 1 : #{line}"
67
+ end
68
+
56
69
  url = statement[:url]
57
70
  when :url_method
58
71
  if url_handler
59
72
  add_handler url_handler
60
73
  end
61
74
 
75
+ if num_tabs != 1
76
+ @clean = false
77
+ puts "Error at line #{line_number} character 1 : #{line}"
78
+ end
79
+
62
80
  url_handler = Builder::UrlHandler.new(url, statement[:url_method].to_s)
63
81
  else
82
+ if num_tabs < 2
83
+ @clean = false
84
+ puts "Error at line #{line_number} character 1 : #{line}"
85
+ end
64
86
  stmt = {
65
87
  :statement => statement,
66
88
  :num_tabs => num_tabs
@@ -213,8 +213,16 @@ module Shift
213
213
  case statement[:condition][:operator].to_s.gsub!(" ", "")
214
214
  when "<="
215
215
  condition_expression = "{lte : " + condition_attribute + "}"
216
+ when ">="
217
+ condition_expression = "{gte : " + condition_attribute + "}"
218
+ when "<"
219
+ condition_expression = "{lt : " + condition_attribute + "}"
220
+ when ">"
221
+ condition_expression = "{gt : " + condition_attribute + "}"
222
+ when "!="
223
+ condition_expression = "{not : " + condition_attribute + "}"
216
224
  else
217
- puts statement[:operator].to_s.gsub!(" ", "")
225
+ condition_expression = condition_attribute
218
226
  end
219
227
 
220
228
  result += "{ " + condition[:attribute] + " : " + condition_expression + " }"
@@ -377,7 +385,7 @@ module Shift
377
385
  url_handler_template = ERB.new(Shift::Generator::JavaScriptTemplates::URL_HANDLER_DEFINITION)
378
386
  result += "\n" + url_handler_template.result(binding) + "\n"
379
387
 
380
- defined_hashes = []
388
+ @defined_hashes = []
381
389
 
382
390
  handlers.handler.each do | statement |
383
391
  result += apply_transforms(statement[:statement], statement[:num_tabs] + functions.length)
@@ -310,7 +310,7 @@ module Shift
310
310
  result = get_import_statements + get_model_data + get_utility_functions
311
311
 
312
312
  @builder.handlers.each do | handlers |
313
- defined_hashes = []
313
+ @defined_hashes = []
314
314
 
315
315
  result += handlers.method + " '" + url_transform(handlers.url) + "' do\n"
316
316
 
@@ -48,5 +48,14 @@ module Shift
48
48
 
49
49
  rule(:integer_cast_keyword) { str('int') }
50
50
 
51
+ rule(:keyword) {
52
+ read_keyword | write_keyword | write_file_keyword | redirect_keyword |
53
+ all_keyword | new_keyword | find_keyword | where_keyword | find_by_id_keyword | update_keyword | delete_keyword |
54
+ if_keyword | else_keyword | for_keyword | in_keyword | while_keyword |
55
+ get_keyword | post_keyword |
56
+ model_keyword | string_keyword | integer_keyword |
57
+ integer_cast_keyword
58
+ }
59
+
51
60
  end
52
61
  end
@@ -6,9 +6,9 @@ module Shift
6
6
 
7
7
  rule(:url_method) { get_keyword.as(:url_method) | post_keyword.as(:url_method) }
8
8
 
9
- rule(:url_variable) { colon >> identifier.as(:url_variable) }
9
+ rule(:url_variable) { colon >> (identifier.as(:url_variable) | keyword.as(:url_variable)) }
10
10
 
11
- rule(:url_token) { (url_variable | identifier.as(:url_token)) >> fwd_slash.maybe }
11
+ rule(:url_token) { (url_variable | (identifier.as(:url_token) | keyword.as(:url_variable))) >> fwd_slash.maybe }
12
12
 
13
13
  rule(:url) { fwd_slash >> url_token.repeat(0) }
14
14
 
@@ -47,12 +47,12 @@ module Shift
47
47
  end
48
48
  rule(:string_value) { single_quoted_string | double_quoted_string }
49
49
 
50
- rule(:identifier) { match('[A-Za-z]') >> match['[A-Za-z0-9_]'].repeat(0) }
50
+ rule(:identifier) { keyword.absent? >> match('[A-Za-z]') >> match['[A-Za-z0-9_]'].repeat(0) }
51
51
 
52
52
  rule(:hash_attribute) { string_value | identifier }
53
- rule(:hash_value) { identifier >> left_square_bracket >> hash_attribute >> right_square_bracket }
53
+ rule(:hash_value) { keyword.absent? >> identifier >> left_square_bracket >> hash_attribute >> right_square_bracket }
54
54
 
55
- rule(:object_value) { identifier >> dot >> identifier }
55
+ rule(:object_value) { keyword.absent? >> identifier >> dot >> keyword.absent? >> identifier }
56
56
 
57
57
  rule(:variables) { space? >> (object_value.as(:object_value) | hash_value.as(:hash_value) | identifier.as(:identifier)) >> space? }
58
58
 
@@ -1,3 +1,3 @@
1
1
  module Shift
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shift-lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: