alphalang 0.1.2 → 0.1.4

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
  SHA256:
3
- metadata.gz: bb11af78d1a68ee1f2a5aaba719040996f435be0183e690bea2532a7fce80201
4
- data.tar.gz: 0f5a33e46b3fa611bab83528e90c481e5ba4ec1a480808a1bc7551fc25b90e4e
3
+ metadata.gz: 9e3d320e5322d98b56f1cd6d5f9e51211de1c41ba6abe20800177bf83ae08133
4
+ data.tar.gz: fe85e5979279fbff45aa74ec9a09435bff67fd49dca35c5fbd332c1c8628c9e7
5
5
  SHA512:
6
- metadata.gz: 7411738e5cd015019a137324144b4a735f3e195263cc23ddf1301ecc2a3803be9ede4d28cc4f84403cb6547bc8dc6c75cf9ee59e307ef22d692632daa1439b58
7
- data.tar.gz: b9ebbb5a83f4a2fb5f547754e7458e0de1249ff0e15fa79a293c5d56727d68237b6ff2de9d9b9be08866440dd5195f1eeff777b11eda23606a05c6b62941c54f
6
+ metadata.gz: 0ee5133266c1e9ebb85c13740d730efb69db1b4deb54853e53103e38275262edc789f425e1450ef5582bb4077590d33c21fbe24662920b473a6d05ba9de21676
7
+ data.tar.gz: 8e756c3aa10fa954cc06fbb299d5eff3ce1335d6c3130f76485280f09c08165fc1c62bd9b5160e83ea68dec7ead8368d7dc584b5915a62a14ca8ed28d2e954d8
data/bin/alphalang CHANGED
@@ -1,7 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'optparse'
3
3
  require File.expand_path('../lib/alpha', __dir__)
4
- ALPHA_VER = '0.1.2'.freeze
4
+ ALPHA_VER = '0.1.4'.freeze
5
+ ABORT_ANSWERS = [' ', '', 'none', 'abort'].freeze # something here? Some cases empty means yes tho..
6
+ LOCALES_PATH = File.join(__dir__, '../lib/locales')
7
+ PROTECTED_LOCALES = ['.', '..', 'locale_template', 'default', 'default.old', 'en', 'sv', 'de'].freeze
5
8
 
6
9
  basic_error_msg = "Usage: alphalang [options] file.alpha\nUsage: alphalang -h for the help menu."
7
10
 
@@ -17,44 +20,96 @@ OptionParser.new do |opts|
17
20
  options[:verify] = true
18
21
  end
19
22
 
20
- opts.on('--lang=LOCALE', 'Set the locale language for all program keywords. Available: en, sv, de') do |lang|
21
- options[:lang] = lang
23
+ opts.on('--locale=LOCALE', 'Set the syntax locale for current program keywords.') do |locale|
24
+ options[:locale] = locale
22
25
  end
23
26
 
24
- opts.on('--createlocale', 'Creates a new locale-file for all program keywords available.') do
27
+ opts.on('--setlocale=LOCALE', 'Set the default syntax locale for all program keywords.') do |new_locale|
28
+ options[:defaultlocale] = new_locale
29
+ end
30
+
31
+ opts.on('--createlocale', 'Creates a new locale file for all program keywords available.') do
25
32
  options[:createlocale] = true
26
33
  end
34
+
35
+ opts.on('--deletelocale', 'Deletes a locale file from your locales directory.') do
36
+ options[:deletelocale] = true
37
+ end
38
+
39
+ opts.on('--listlocales', 'Lists all available locale files from your locales directory.') do
40
+ options[:listlocales] = true
41
+ end
42
+
43
+ opts.on('--listlocale', 'Lists all keywords from a specific locale file from your locales directory.') do
44
+ options[:listlocale] = true
45
+ end
27
46
  end.parse!
28
47
 
29
- verbose = options[:verbose]
30
- verify = options[:verify]
31
- language = options[:lang] || 'en'
32
- createlocale = options[:createlocale]
48
+ verbose_flag = options[:verbose]
49
+ verify_flag = options[:verify]
50
+ language_flag = options[:locale]
51
+ set_locale_flag = options[:defaultlocale]
52
+ create_locale_flag = options[:createlocale]
53
+ delete_locale_flag = options[:deletelocale]
54
+ list_locales_flag = options[:listlocales]
55
+ list_locale_flag = options[:listlocale]
33
56
 
34
- if createlocale
57
+ if create_locale_flag
35
58
  require_relative '../lib/lang_creator'
36
59
  create_locale_file
37
60
  return
38
61
  end
39
62
 
63
+ if language_flag.is_a?(NilClass)
64
+ language_flag = 'default'
65
+ end
66
+
67
+ if !set_locale_flag.is_a?(NilClass)
68
+ unless ARGV.empty?
69
+ puts 'Flag for verification found. Ignoring input file.'
70
+ sleep 0.5
71
+ end
72
+ require_relative '../lib/locale_defaulter'
73
+ set_default_locale(set_locale_flag)
74
+ return
75
+ end
76
+
77
+ if delete_locale_flag
78
+ require_relative '../lib/locale_deleter'
79
+ delete_locale_file
80
+ return
81
+ end
82
+
83
+ if list_locales_flag
84
+ require_relative '../lib/locale_lister'
85
+ list_locale_files
86
+ return
87
+ end
88
+
89
+ if list_locale_flag
90
+ require_relative '../lib/locale_lister'
91
+ list_specific_locale_file
92
+ return
93
+ end
94
+
40
95
  raise OptionParser::MissingArgument, "No file provided.
41
- Usage: alphalang my_file.alpha | alphalang -h" if ARGV.empty? unless verify
96
+ Usage: alphalang my_file.alpha | alphalang -h" if ARGV.empty? unless verify_flag
42
97
  raise OptionParser::InvalidArgument, 'Too many files provided.
43
98
  Did you mean to use an --[option]? | alphalang -h' if ARGV.length > 1
44
- raise OptionParser::InvalidArgument, 'File must end with .alpha' unless verify or ARGV[0].end_with?('.alpha')
99
+ raise OptionParser::InvalidArgument, 'File must end with .alpha' unless verify_flag or ARGV[0].end_with?('.alpha')
45
100
 
46
- if verbose
101
+ if verbose_flag
47
102
  require_relative '../lib/rdparse'
48
103
  else
49
104
  require_relative '../lib/rdparse_quiet'
50
105
  end
51
106
 
52
- if verify
53
- if !ARGV.empty?
107
+ if verify_flag
108
+ unless ARGV.empty?
54
109
  puts 'Flag for verification found. Ignoring input file.'
55
110
  sleep 1
56
111
  end
57
112
  require_relative '../lib/tester/test_unit'
58
113
  else
59
- LangParser.new(language).parse_file(ARGV[0])
114
+ LangParser.new(language_flag).parse_file(ARGV[0])
60
115
  end
data/lib/alpha.rb CHANGED
@@ -1,7 +1,7 @@
1
- require_relative './nodes/stmtnodes'
1
+ require_relative './nodes/scopemanager'
2
2
 
3
3
  class LangParser
4
- def initialize(locale='en')
4
+ def initialize(locale = 'default')
5
5
  @langParser = Parser.new('lang parser', locale) do
6
6
  token(/while/) { |_| :WHILE }
7
7
  token(/print/) { |_| :PRINT }
@@ -81,11 +81,6 @@ class LangParser
81
81
  match(:member, '=', :array_stmt) { |var, _, value| VariableDecNode.new(var, value) }
82
82
  end
83
83
 
84
- #array inte klar kan assigna till vaiabel men inte kolla upp än
85
- rule :array_stmt do
86
- match('[', :arg_list, ']') { |_, array, _| array }
87
- end
88
-
89
84
  rule :pause_stmt do
90
85
  match(:PAUSE, :expr) { |_, a| PauseNode.new(a) }
91
86
  end
@@ -109,6 +104,15 @@ class LangParser
109
104
  match(:NOT, :expr_stmt) { |_, b| NotNode.new(b) }
110
105
  end
111
106
 
107
+ rule :array_stmt do
108
+ match('[', :arg_list, ']') { |_, array, _| array }
109
+ end
110
+
111
+ rule :arg_list do
112
+ match(:expr, ',', :arg_list) { |a, _, b| ArrayNode.new(a, b) }
113
+ match(:expr) { |a| ArrayNode.new(a, NilClass) }
114
+ end
115
+
112
116
  rule :expr do
113
117
  match(:expr, /(<|>)/, :expr) { |a, op, b| CompareNode.new(a, op, b) }
114
118
  match(/(<|>)/, :expr) { |op, b| CompareNode.new(nil, op, b) }
@@ -141,14 +145,11 @@ class LangParser
141
145
  rule :member do
142
146
  match(/[a-z]/, '(', :arg_list, ')') { |var, _, args, _| FuncCallNode.new(var, args) }
143
147
  match(/[a-z]/, '(', ')') { |var, _, _| FuncCallNode.new(var, NilClass) }
148
+ match(/[a-z]/, '[', '-', /\d+/, ']') { |var, _, neg, index, _| ArrayCallNode.new(var, (neg+index)) }
149
+ match(/[a-z]/, '[', /\d+/, ']') { |var, _, index, _| ArrayCallNode.new(var, index) }
144
150
  match(/[a-z]/) { |var| VariableCallNode.new(var) }
145
151
  end
146
152
 
147
- rule :arg_list do
148
- match(:expr, ',', :arg_list) { |a, _, b| ArrayNode.new(a, b) }
149
- match(:expr) { |a| ArrayNode.new(a, NilClass) }
150
- end
151
-
152
153
  rule :prio_stmt do
153
154
  match('(', :stmt, ')') { |_, a, _| a }
154
155
  end
data/lib/lang_creator.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ require_relative 'locale_lister'
2
3
 
3
4
  # Function to read user input for translation
4
5
  def read_translation(line)
@@ -29,77 +30,66 @@ def read_translation_not_and_or(line)
29
30
  return "(#{input.empty? ? word : input}#{postfix}"
30
31
  end
31
32
 
32
- def prompt_user(locale_template, file)
33
+ def prompt_user(file)
34
+ locale_template = File.readlines("#{LOCALES_PATH}/locale_template")
35
+
33
36
  counter = 0
34
- locale_template.each do |line|
35
- counter += 1
36
- break if counter == 14
37
+ File.open(file, 'a') do |f|
38
+ locale_template.each do |line|
39
+ counter += 1
40
+ break if counter == 14
37
41
 
38
- if counter < 9
39
- translation = read_translation(line.chomp)
40
- File.open(file, 'a') { |f| f.puts "#{line.chomp} #{translation}" }
41
- end
42
- if counter == 9
43
- translation = read_translation_true_false(line.chomp)
44
- File.open(file, 'a') { |f| f.puts "#{line.chomp} #{translation}" }
45
- end
46
- if counter == 10
47
- File.open(file, 'a') { |f| f.puts "#{line.chomp} (==|<=|>=)" }
42
+ if counter < 9
43
+ translation = read_translation(line.chomp)
44
+ f.puts "#{line.chomp} #{translation}"
45
+ end
46
+ if counter == 9
47
+ translation = read_translation_true_false(line.chomp)
48
+ f.puts "#{line.chomp} #{translation}"
49
+ end
50
+ if counter == 10
51
+ f.puts "#{line.chomp} (==|<=|>=)"
52
+ end
53
+ if counter > 10
54
+ translation = read_translation_not_and_or(line.chomp)
55
+ f.puts "#{line.chomp} #{translation}"
56
+ end
48
57
  end
49
- if counter > 10
50
- translation = read_translation_not_and_or(line.chomp)
51
- File.open(file, 'a') { |f| f.puts "#{line.chomp} #{translation}" }
52
- end
53
- end
54
- end
55
-
56
- def save_file(file)
57
- ruby_version = "#{RUBY_VERSION}"
58
- ruby_version[-1] = '0'
59
- install_path = "/home/#{ENV['USER']}/.local/share/gem/ruby/#{ruby_version}/gems/alphalang-#{ALPHA_VER}"
60
-
61
- if File.exist?(install_path)
62
- File.rename(file, "#{install_path}/lib/locales/#{file}")
63
- puts "Locale/syntax saved to #{install_path}/lib/locales/#{file}"
64
- else
65
- raise ArgumentError, "Didn't find your #{install_path}.\nTried #{ruby_version} as <VERSION>"
58
+ f.puts '\s+ \s+'
59
+ f.puts '\d+ \d+'
60
+ f.puts '\w+ \w+'
61
+ f.puts '. .'
66
62
  end
67
63
  end
68
64
 
69
65
  def create_locale_file()
70
66
  puts 'Choose a filename for your locale/syntax:'
71
- filename = gets.chomp
72
- File.open(filename, 'w') {}
67
+ new_locale_name = gets.chomp
68
+ new_locale_file_path = "#{LOCALES_PATH}/#{new_locale_name}"
73
69
 
74
- # import locale template
75
- locale_path = File.join(__dir__, 'locales', 'locale_template')
76
- token_template = File.readlines(locale_path)
70
+ if File.exist?(new_locale_file_path)
71
+ puts "#{new_locale_name} already exists."
72
+ return
73
+ end
77
74
 
78
75
  # prompt user for translations
79
- prompt_user(token_template, filename)
80
-
81
- # Append additional translations
82
- File.open(filename, 'a') do |f|
83
- f.puts '\s+ \s+'
84
- f.puts '\d+ \d+'
85
- f.puts '\w+ \w+'
86
- f.puts '. .'
87
- end
76
+ prompt_user(new_locale_file_path)
88
77
 
89
78
  # Clear the screen
90
79
  system('clear')
91
80
 
92
81
  # Display the contents of the translation file
93
- puts File.read(filename)
82
+ locale_as_array = clean_locale_file_to_array(new_locale_name)
83
+ print_clean_locale_array(new_locale_name, locale_as_array)
94
84
 
95
85
  # Ask user if the translation is correct
96
86
  puts 'Is this correct? [Y/n]'
97
87
  answer = gets.chomp
98
88
 
99
89
  if answer.downcase == /y|Y/ or answer.empty?
100
- save_file(filename)
90
+ puts "Locale is saved as #{new_locale_name} in #{LOCALES_PATH}"
101
91
  else
102
92
  puts 'Translation removed'
103
- File.delete(filename)
93
+ File.delete(new_locale_file)
104
94
  end
105
95
  end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative 'locale_lister'
4
+
5
+ def set_default_locale(new_locale)
6
+ available_locales = get_locale_files
7
+
8
+ available_locales.each do |locale|
9
+ if locale == new_locale
10
+ File.rename("#{LOCALES_PATH}/default", "#{LOCALES_PATH}/default.old")
11
+ File.copy_stream("#{LOCALES_PATH}/#{new_locale}", "#{LOCALES_PATH}/default")
12
+ puts "[alphalang] Default syntax locale is now set to #{locale}."
13
+ return
14
+ end
15
+ end
16
+ end
File without changes
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ def prompt_user_for_deletion(locales)
4
+ puts 'Which locale would you like to delete?: RET or "none" to abort'
5
+
6
+ locales.each do |locale|
7
+ puts locale
8
+ end
9
+
10
+ locale_file = gets.chomp
11
+
12
+ return if ABORT_ANSWERS.include?(locale_file)
13
+
14
+ if PROTECTED_LOCALES.include?(locale_file)
15
+ puts 'You may not delete a default locale.'
16
+ return
17
+ else
18
+ File.delete("#{LOCALES_PATH}/#{locale_file}")
19
+ puts "Successfully deleted #{LOCALES_PATH}/#{locale_file}"
20
+ end
21
+ end
22
+
23
+ def delete_locale_file()
24
+ imported_locales = Dir.entries(LOCALES_PATH).reject { |entry| PROTECTED_LOCALES.include?(entry) }
25
+
26
+ if imported_locales.empty?
27
+ puts '[alphalang] There are no locale files to delete. Default locale files are protected.'
28
+ return
29
+ else
30
+ prompt_user_for_deletion(imported_locales)
31
+ end
32
+ end
File without changes
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # extra_entries_array in case we wanna make a "protected locale" function later on
4
+ def get_locale_files(extra_entries_array = [])
5
+ protected_locales = ['.', '..', 'locale_template', 'default', 'default.old', extra_entries_array].flatten
6
+ Dir.entries(LOCALES_PATH).reject { |entry| protected_locales.include?(entry) }
7
+ end
8
+
9
+ def list_locale_files()
10
+ locales = get_locale_files
11
+ puts "[alphalang] These are the available locales.\ndefault"
12
+ locales.each do |locale|
13
+ puts locale
14
+ end
15
+ puts
16
+ end
17
+
18
+ def clean_locale_file_to_array(locale_name)
19
+ locale_file = File.readlines("#{LOCALES_PATH}/#{locale_name}")
20
+
21
+ clean_locale_file_array = []
22
+ locale_file.each do |line|
23
+ line.scan(/\b\p{Word}+\b/) do |word|
24
+ clean_locale_file_array << word if word.size > 1
25
+ end
26
+ end
27
+ clean_locale_file_array
28
+ end
29
+
30
+ def print_clean_locale_array(locale_name, clean_array)
31
+ header = "\n[alphalang] Syntax for locale <#{locale_name}>."
32
+ puts header
33
+ puts '+' * (header.size - 2)
34
+ clean_line = ''
35
+ clean_array.each_with_index do |word, index|
36
+ if index.even?
37
+ clean_line += "+ #{word}"
38
+ else
39
+ clean_line += (' ' * (20 - clean_line.size)) + "#{word}"
40
+ clean_line += (' ' * (header.size - clean_line.size - 3) + '+')
41
+ puts clean_line
42
+ clean_line = ''
43
+ end
44
+ end
45
+ puts '+' * (header.size - 2)
46
+ end
47
+
48
+ def list_specific_locale_file()
49
+ list_locale_files
50
+ specific_locale = gets.chomp
51
+
52
+ return if ABORT_ANSWERS.include?(specific_locale)
53
+
54
+ specific_locale_array = clean_locale_file_to_array(specific_locale)
55
+ print_clean_locale_array(specific_locale, specific_locale_array)
56
+ end
File without changes
@@ -0,0 +1,17 @@
1
+ while while
2
+ print print
3
+ pause pause
4
+ def def
5
+ end end
6
+ if if
7
+ elseif elseif
8
+ else else
9
+ (false|true) (false|true)
10
+ (==|<=|>=) (==|<=|>=)
11
+ (not|!) (not|!)
12
+ (and|&&) (and|&&)
13
+ (or|\|\|) (or|\|\|)
14
+ \s+ \s+
15
+ \d+ \d+
16
+ \w+ \w+
17
+ . .
@@ -1,9 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- ####################################################
3
-
4
- $scopes = [{}]
5
- $scope_lvl = 0
6
- $test_nodes = false
7
2
 
8
3
  ####################################################
9
4
 
@@ -0,0 +1,49 @@
1
+ require_relative 'stmtnodes'
2
+
3
+ ####################################################
4
+
5
+ $scopes = [{}]
6
+ $scope_lvl = 0
7
+ $test_nodes = false
8
+
9
+ # Need to figure out how to move the scopes in here as class members in a sane way
10
+ class ScopeManager
11
+ def self.scope_lvl
12
+ $scope_lvl
13
+ end
14
+
15
+ def self.lookup_var(name)
16
+ temp_scope_lvl = $scope_lvl
17
+ while temp_scope_lvl >= 0
18
+ if !$scopes[temp_scope_lvl].key?(name)
19
+ temp_scope_lvl -= 1
20
+ else
21
+ return $scopes[temp_scope_lvl][name]
22
+ end
23
+ end
24
+ raise ArgumentError, "Variable '#{name}' is not defined" unless @value
25
+ end
26
+
27
+ def self.increment_scope_level
28
+ $scope_lvl += 1
29
+ $scopes.push({})
30
+ end
31
+
32
+ def self.decrement_scope_level
33
+ $scope_lvl -= 1
34
+ $scopes.pop
35
+ end
36
+
37
+ def self.lookup_func(name)
38
+ raise ArgumentError, "Function '#{name}' is not defined" if $scopes[0][name].is_a?(NilClass)
39
+ return $scopes[0][name]
40
+ end
41
+
42
+ def self.add_to_current_scope(name, value)
43
+ $scopes[$scope_lvl][name.name] = value.evaluate
44
+ end
45
+
46
+ def self.add_func_to_global_scope(name, value, args)
47
+ $scopes[0][name.name] = [value, args]
48
+ end
49
+ end
File without changes
@@ -1,6 +1,7 @@
1
1
  require_relative 'basenodes'
2
2
 
3
3
  ####################################################
4
+
4
5
  class VariableCallNode < Node
5
6
  attr_accessor :name
6
7
 
@@ -8,19 +9,9 @@ class VariableCallNode < Node
8
9
  @name = name
9
10
  end
10
11
 
11
- def lookup_var(name)
12
- temp_scope_lvl = $scope_lvl
13
- while temp_scope_lvl >= 0
14
- if not $scopes[temp_scope_lvl].has_key?(name)
15
- temp_scope_lvl -= 1
16
- else
17
- return $scopes[temp_scope_lvl][name]
18
- end
19
- end
20
- end
21
-
22
12
  def evaluate
23
- return @value = lookup_var(@name)
13
+ @value = ScopeManager.lookup_var(@name)
14
+ return @value
24
15
  end
25
16
  end
26
17
 
@@ -33,9 +24,8 @@ class VariableDecNode < Node
33
24
  end
34
25
 
35
26
  def evaluate
36
- $scopes[$scope_lvl][@name.name] = @value.evaluate
27
+ ScopeManager.add_to_current_scope(name, @value)
37
28
  self
38
- # return nil
39
29
  end
40
30
  end
41
31
 
@@ -49,7 +39,7 @@ class FunctionDecNode < Node
49
39
  end
50
40
 
51
41
  def evaluate
52
- $scopes[0][@name.name] = [@value, @args]
42
+ ScopeManager.add_func_to_global_scope(@name, @value, @args)
53
43
  return nil
54
44
  end
55
45
  end
@@ -62,19 +52,13 @@ class FuncCallNode < Node
62
52
  @args = args
63
53
  end
64
54
 
65
- def lookup_var(name)
66
- return $scopes[0][name]
67
- end
68
-
69
55
  def evaluate
70
- $scopes.push({})
71
- func = lookup_var(@name)
56
+ func = ScopeManager.lookup_func(@name)
57
+
72
58
  function_body = func[0]
73
59
  function_param = func[1]
74
60
 
75
- return nil if func.is_a?(NilClass)
76
-
77
- $scope_lvl += 1
61
+ ScopeManager.increment_scope_level
78
62
 
79
63
  if function_param.is_a?(ArrayNode)
80
64
  function_param.each do |val, index|
@@ -83,18 +67,18 @@ class FuncCallNode < Node
83
67
  end
84
68
  end
85
69
 
86
- func_result = function_body.evaluate
87
- old_scope_lvl = $scope_lvl
88
- # Om en assign är returnvärde så declareras variablen i globalt scope
89
- if func_result.is_a?(VariableDecNode)
90
- $scope_lvl = 0
91
- func_result.evaluate
92
- $scope_lvl = old_scope_lvl
93
- end
70
+ func_return_value = function_body.evaluate
71
+
72
+ ScopeManager.decrement_scope_level
94
73
 
95
- $scope_lvl -= 1
96
- $scopes.pop
97
- return func_result
74
+ # If function return value is an "Assign" then we declare that variable in the global scope.
75
+ old_scope_lvl = ScopeManager.scope_lvl
76
+ if func_return_value.is_a?(VariableDecNode)
77
+ ScopeManager.scope_lvl = 0
78
+ func_return_value.evaluate
79
+ ScopeManager.scope_lvl = old_scope_lvl
80
+ end
81
+ return func_return_value
98
82
  end
99
83
  end
100
84
 
@@ -176,6 +160,23 @@ end
176
160
 
177
161
  ####################################################
178
162
 
163
+ class ArrayCallNode < Node
164
+ def initialize(array, index)
165
+ super(array)
166
+ @index = index.to_i
167
+ end
168
+
169
+ def evaluate
170
+ arr = ScopeManager.lookup_var(@value)
171
+ if @index > arr.size - 1
172
+ raise ArgumentError, "You are trying to access an out of bounds index. Here -> #{@value}[#{@index}]"
173
+ end
174
+ @value = arr[@index]
175
+ end
176
+ end
177
+
178
+ ####################################################
179
+
179
180
  class PrintNode
180
181
  attr_accessor :value
181
182
 
@@ -185,7 +186,7 @@ class PrintNode
185
186
 
186
187
  def evaluate
187
188
  puts @value.evaluate
188
- self.class # detta kanske är trevligare än nil, åter igen den diskussionen.
189
+ self.class
189
190
  end
190
191
  end
191
192
 
data/lib/rdparse.rb CHANGED
@@ -125,10 +125,9 @@ class Parser
125
125
  class ParseError < RuntimeError
126
126
  end
127
127
 
128
- def initialize(language_name, locale='en', &block)
128
+ def initialize(language_name, locale = 'default', &block)
129
129
 
130
- locales_path = File.join(__dir__, "locales", locale)
131
- token_pairs = File.readlines(locales_path)
130
+ token_pairs = File.readlines("#{LOCALES_PATH}/#{locale}")
132
131
  @token_list = Hash.new
133
132
  token_pairs.each do |pair|
134
133
  default_value, locale_value = pair.split(' ')
data/lib/rdparse_quiet.rb CHANGED
@@ -126,10 +126,9 @@ class Parser
126
126
  class ParseError < RuntimeError
127
127
  end
128
128
 
129
- def initialize(language_name, locale='en', &block)
129
+ def initialize(language_name, locale = 'default', &block)
130
130
 
131
- locales_path = File.join(__dir__, "locales", locale)
132
- token_pairs = File.readlines(locales_path)
131
+ token_pairs = File.readlines("#{LOCALES_PATH}/#{locale}")
133
132
  @token_list = Hash.new
134
133
  token_pairs.each do |pair|
135
134
  default_value, locale_value = pair.split(' ')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alphalang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - mattias
@@ -61,11 +61,20 @@ files:
61
61
  - bin/alphalang
62
62
  - lib/alpha.rb
63
63
  - lib/lang_creator.rb
64
+ - lib/locale_defaulter.rb
65
+ - lib/locale_defaulter.rb~
66
+ - lib/locale_deleter.rb
67
+ - lib/locale_deleter.rb~
68
+ - lib/locale_lister.rb
69
+ - lib/locale_lister.rb~
64
70
  - lib/locales/de
71
+ - lib/locales/default
65
72
  - lib/locales/en
66
73
  - lib/locales/locale_template
67
74
  - lib/locales/sv
68
75
  - lib/nodes/basenodes.rb
76
+ - lib/nodes/scopemanager.rb
77
+ - lib/nodes/scopemanager.rb~
69
78
  - lib/nodes/stmtnodes.rb
70
79
  - lib/rdparse.rb
71
80
  - lib/rdparse_quiet.rb