q-language 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. data/.gemtest +0 -0
  2. data/Rakefile +10 -0
  3. data/lib/q-language.rb +9 -0
  4. data/lib/q-language/device.rb +166 -0
  5. data/lib/q-language/environment.rb +358 -0
  6. data/lib/q-language/methods/array.rb +523 -0
  7. data/lib/q-language/methods/block.rb +26 -0
  8. data/lib/q-language/methods/class.rb +24 -0
  9. data/lib/q-language/methods/dynamic.rb +82 -0
  10. data/lib/q-language/methods/false.rb +47 -0
  11. data/lib/q-language/methods/hash.rb +351 -0
  12. data/lib/q-language/methods/implicit.rb +345 -0
  13. data/lib/q-language/methods/module.rb +39 -0
  14. data/lib/q-language/methods/nil.rb +47 -0
  15. data/lib/q-language/methods/number.rb +118 -0
  16. data/lib/q-language/methods/object.rb +155 -0
  17. data/lib/q-language/methods/string.rb +157 -0
  18. data/lib/q-language/methods/time.rb +110 -0
  19. data/lib/q-language/methods/token.rb +72 -0
  20. data/lib/q-language/methods/true.rb +14 -0
  21. data/lib/q-language/node.rb +45 -0
  22. data/lib/q-language/object.rb +125 -0
  23. data/lib/q-language/parser.rb +104 -0
  24. data/lib/q-language/writer.rb +90 -0
  25. data/test/methods/test_array.rb +191 -0
  26. data/test/methods/test_block.rb +66 -0
  27. data/test/methods/test_class.rb +34 -0
  28. data/test/methods/test_dynamic.rb +158 -0
  29. data/test/methods/test_false.rb +60 -0
  30. data/test/methods/test_hash.rb +10 -0
  31. data/test/methods/test_implicit.rb +332 -0
  32. data/test/methods/test_module.rb +55 -0
  33. data/test/methods/test_nil.rb +60 -0
  34. data/test/methods/test_number.rb +10 -0
  35. data/test/methods/test_object.rb +157 -0
  36. data/test/methods/test_string.rb +271 -0
  37. data/test/methods/test_time.rb +181 -0
  38. data/test/methods/test_token.rb +92 -0
  39. data/test/methods/test_true.rb +16 -0
  40. data/test/test.rb +23 -0
  41. metadata +103 -0
@@ -0,0 +1,155 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QObject < Q_Object
7
+ def and (object)
8
+ object
9
+ end
10
+
11
+ def array?
12
+ false
13
+ end
14
+
15
+ def block?
16
+ false
17
+ end
18
+
19
+ def break_if (&block)
20
+ if result = yield
21
+ env::break!
22
+ return value
23
+ end
24
+
25
+ result
26
+ end
27
+
28
+ def break_unless (&block)
29
+ unless result = yield
30
+ env::break!
31
+ return value
32
+ end
33
+
34
+ result
35
+ end
36
+
37
+ def choose (object_1, object_2)
38
+ object_1
39
+ end
40
+
41
+ def class?
42
+ false
43
+ end
44
+
45
+ def dup
46
+ value.dup
47
+ rescue TypeError
48
+ # Duplication is disallowed
49
+ value
50
+ end
51
+
52
+ def dynamic?
53
+ false
54
+ end
55
+
56
+ def eq? (object)
57
+ value == object
58
+ end
59
+
60
+ def eqq? (object)
61
+ value === object
62
+ end
63
+
64
+ def false?
65
+ false
66
+ end
67
+
68
+ def hash?
69
+ false
70
+ end
71
+
72
+ def if (&block)
73
+ env::jump! # skip the rest of the block
74
+ yield
75
+ end
76
+
77
+ def jump_if (&block)
78
+ if result = yield
79
+ env::jump!
80
+ return value
81
+ end
82
+
83
+ result
84
+ end
85
+
86
+ def jump_unless (&block)
87
+ unless result = yield
88
+ env::jump!
89
+ return value
90
+ end
91
+
92
+ result
93
+ end
94
+
95
+ def module?
96
+ false
97
+ end
98
+
99
+ def neq? (object)
100
+ value != object
101
+ end
102
+
103
+ def nil?
104
+ false
105
+ end
106
+
107
+ def not
108
+ false
109
+ end
110
+
111
+ def number?
112
+ false
113
+ end
114
+
115
+ def or (object)
116
+ value
117
+ end
118
+
119
+ def same? (object)
120
+ value.object_id == object.object_id
121
+ end
122
+
123
+ def string?
124
+ false
125
+ end
126
+
127
+ def tally
128
+ 1
129
+ end
130
+
131
+ def time?
132
+ false
133
+ end
134
+
135
+ def token?
136
+ false
137
+ end
138
+
139
+ def true?
140
+ false
141
+ end
142
+
143
+ def unless (&block)
144
+ nil
145
+ end
146
+
147
+ def use (&block)
148
+ yield value
149
+ value
150
+ end
151
+
152
+ def xor (object)
153
+ !object
154
+ end
155
+ end
@@ -0,0 +1,157 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QString < QObject
7
+ def QString.from_s (string)
8
+ string
9
+ end
10
+
11
+ def add (string)
12
+ value + string
13
+ end
14
+
15
+ def add_all (*every_string)
16
+ value + every_string.join('')
17
+ end
18
+
19
+ def at (number)
20
+ value.slice(number)
21
+ end
22
+
23
+ def between? (string_1, string_2)
24
+ value.between?(string_1, string_2)
25
+ end
26
+
27
+ def capitalize
28
+ value.capitalize
29
+ end
30
+
31
+ def capitalize!
32
+ value.capitalize!
33
+ end
34
+
35
+ def clear
36
+ value.clear
37
+ end
38
+
39
+ def downcase
40
+ value.downcase
41
+ end
42
+
43
+ def downcase!
44
+ value.downcase!
45
+ end
46
+
47
+ def each (&block)
48
+ value.each_char do |obj|
49
+ result = yield obj
50
+ break result if env::break?
51
+ end
52
+ end
53
+
54
+ def each_line (&block)
55
+ value.each_line do |obj|
56
+ result = yield obj
57
+ break result if env::break?
58
+ end
59
+ end
60
+
61
+ def empty?
62
+ value.empty?
63
+ end
64
+
65
+ def end_with? (string)
66
+ value.end_with? string
67
+ end
68
+
69
+ def include? (string)
70
+ value.include? string
71
+ end
72
+
73
+ def index (string)
74
+ value.index(string)
75
+ end
76
+
77
+ def length
78
+ value.length
79
+ end
80
+
81
+ def next
82
+ value.next
83
+ end
84
+
85
+ def next!
86
+ value.next!
87
+ end
88
+
89
+ def partition (string)
90
+ value.partition(string)
91
+ end
92
+
93
+ def push (string)
94
+ value << string
95
+ end
96
+
97
+ def push_all (*every_string)
98
+ value << every_string.join('')
99
+ end
100
+
101
+ def replace (string)
102
+ value.replace(string)
103
+ end
104
+
105
+ def reverse
106
+ value.reverse
107
+ end
108
+
109
+ def reverse!
110
+ value.reverse!
111
+ end
112
+
113
+ def split (string)
114
+ value.split(string)
115
+ end
116
+
117
+ def start_with? (string)
118
+ value.start_with? string
119
+ end
120
+
121
+ def string?
122
+ value
123
+ end
124
+
125
+ def stringify
126
+ value.dup
127
+ end
128
+
129
+ def strip
130
+ value.strip
131
+ end
132
+
133
+ def strip!
134
+ value.strip!
135
+ value
136
+ end
137
+
138
+ def swapcase
139
+ value.swapcase
140
+ end
141
+
142
+ def swapcase!
143
+ value.swapcase!
144
+ end
145
+
146
+ def tokenize
147
+ value.to_sym
148
+ end
149
+
150
+ def upcase
151
+ value.upcase
152
+ end
153
+
154
+ def upcase!
155
+ value.upcase!
156
+ end
157
+ end
@@ -0,0 +1,110 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QTime < QObject
7
+ def add (number)
8
+ value + number
9
+ end
10
+
11
+ def after? (time)
12
+ value > time
13
+ end
14
+
15
+ def before? (time)
16
+ value < time
17
+ end
18
+
19
+ def between? (time_1, time_2)
20
+ value.between?(*[time_1, time_2].sort)
21
+ end
22
+
23
+ def difference (time)
24
+ value - time
25
+ end
26
+
27
+ def friday?
28
+ value.friday?
29
+ end
30
+
31
+ def hour
32
+ value.hour
33
+ end
34
+
35
+ def minute
36
+ value.min
37
+ end
38
+
39
+ def monday?
40
+ value.monday?
41
+ end
42
+
43
+ def month
44
+ value.month
45
+ end
46
+
47
+ def next
48
+ value + 1
49
+ end
50
+
51
+ def round
52
+ value.round
53
+ end
54
+
55
+ def saturday?
56
+ value.saturday?
57
+ end
58
+
59
+ def second
60
+ value.sec
61
+ end
62
+
63
+ def split
64
+ value.to_a.first(6).reverse
65
+ end
66
+
67
+ def subtract (number)
68
+ value - number
69
+ end
70
+
71
+ def sunday?
72
+ value.sunday?
73
+ end
74
+
75
+ def thursday?
76
+ value.thursday?
77
+ end
78
+
79
+ def time?
80
+ value
81
+ end
82
+
83
+ def to_number
84
+ value.to_f
85
+ end
86
+
87
+ def tuesday?
88
+ value.tuesday?
89
+ end
90
+
91
+ def wednesday?
92
+ value.wednesday?
93
+ end
94
+
95
+ def weekday
96
+ value.wday
97
+ end
98
+
99
+ def year_day
100
+ value.yday
101
+ end
102
+
103
+ def year
104
+ value.year
105
+ end
106
+
107
+ def yesterday
108
+ value - 86400
109
+ end
110
+ end
@@ -0,0 +1,72 @@
1
+ # encoding: UTF-8
2
+ #
3
+ # Copyright © 2010-2011 Jesse Sielaff
4
+ #
5
+
6
+ class QToken < QObject
7
+ def QToken.from_s (string)
8
+ string.to_sym
9
+ end
10
+
11
+ def at (number)
12
+ value[number]
13
+ end
14
+
15
+ def capitalize
16
+ value.capitalize
17
+ end
18
+
19
+ def downcase
20
+ value.downcase
21
+ end
22
+
23
+ def empty?
24
+ value.empty?
25
+ end
26
+
27
+ def get
28
+ env::get(value)
29
+ end
30
+
31
+ def iget
32
+ env::self.instance_variable_get(:"@#{value}")
33
+ rescue NameError
34
+ # Illegal name for instance variable
35
+ nil
36
+ end
37
+
38
+ def iset (object)
39
+ env::self.instance_variable_set(:"@#{value}", object)
40
+ rescue NameError
41
+ # Illegal name for instance variable
42
+ nil
43
+ end
44
+
45
+ def length
46
+ value.length
47
+ end
48
+
49
+ def next
50
+ value.next
51
+ end
52
+
53
+ def set (object)
54
+ env::set(value, object)
55
+ end
56
+
57
+ def stringify
58
+ value.to_s
59
+ end
60
+
61
+ def swapcase
62
+ value.swapcase
63
+ end
64
+
65
+ def token?
66
+ value
67
+ end
68
+
69
+ def upcase
70
+ value.upcase
71
+ end
72
+ end