mirah_model 0.0.1-java → 0.0.2-java
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.
- data/README.md +1 -0
- data/Rakefile +25 -18
- data/lib/mirah_model.rb +4 -0
- data/lib/mirah_model/datastore.rb +19 -19
- data/lib/mirahdatastore.jar +0 -0
- data/test/com/google/appengine/ext/{duby → mirah}/db/ModelTest.class +0 -0
- data/test/com/google/appengine/ext/{duby → mirah}/db/TestModel$Query.class +0 -0
- data/test/com/google/appengine/ext/{duby → mirah}/db/TestModel.class +0 -0
- data/test/model_test.mirah +2 -2
- metadata +15 -25
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -1,30 +1,31 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'rubygems/package_task'
|
3
3
|
require 'ant'
|
4
|
+
|
4
5
|
require 'appengine-sdk'
|
5
6
|
require 'mirah_task'
|
6
7
|
|
7
|
-
|
8
8
|
Gem::PackageTask.new Gem::Specification.load('mirah_model.gemspec') do |pkg|
|
9
9
|
pkg.need_zip = true
|
10
10
|
pkg.need_tar = true
|
11
11
|
end
|
12
12
|
|
13
|
-
task :gem => :jar
|
14
13
|
#require 'maven/junit/junit'
|
15
14
|
# -- will work after maven support --JUNIT_JAR = Gem.find_files('maven/junit/junit.jar').first
|
16
|
-
|
17
|
-
TESTING_JARS = [AppEngine::SDK::API_JAR,
|
18
|
-
|
19
|
-
|
15
|
+
|
16
|
+
TESTING_JARS = [AppEngine::SDK::API_JAR,
|
17
|
+
AppEngine::SDK::LABS_JAR,
|
18
|
+
'javalib/junit.jar',
|
19
|
+
*AppEngine::SDK::RUNTIME_JARS.reject {|j| j =~ /appengine-local-runtime/}
|
20
|
+
]
|
21
|
+
|
20
22
|
TESTING_JARS.each {|jar| $CLASSPATH << jar}
|
21
23
|
|
22
|
-
#
|
24
|
+
#Mirah.compiler_options = ['-V']
|
23
25
|
|
24
26
|
task :default => :test
|
25
27
|
|
26
|
-
task :init do
|
27
|
-
mkdir_p 'dist'
|
28
|
+
task :init do
|
28
29
|
mkdir_p 'build'
|
29
30
|
end
|
30
31
|
|
@@ -34,22 +35,28 @@ task :clean do
|
|
34
35
|
end
|
35
36
|
|
36
37
|
task :compile => :init do
|
37
|
-
# build the
|
38
|
-
puts "Compiling
|
39
|
-
|
38
|
+
# build the Mirah sources
|
39
|
+
puts "Compiling Mirah sources"
|
40
|
+
args = Dir['src/**/*.{mirah,duby}'] + [{ :dir => 'src', :dest => 'build'}]
|
41
|
+
mirahc *args
|
40
42
|
end
|
41
43
|
|
42
44
|
desc "run tests"
|
43
45
|
task :compile_test => :jar do
|
44
|
-
puts "Compiling
|
45
|
-
|
46
|
-
:options => ['--classpath', Dir.pwd + "/
|
46
|
+
puts "Compiling Mirah tests"
|
47
|
+
args = Dir['test/**/*.{mirah,duby}'] + [{ :dir => 'test', :dest => 'test',
|
48
|
+
:options => ['--classpath', Dir.pwd + "/lib/mirahdatastore.jar"]}]
|
49
|
+
mirahc *args
|
47
50
|
end
|
48
51
|
|
52
|
+
file 'lib/mirahdatastore.jar' => :jar
|
53
|
+
|
49
54
|
desc "build jar"
|
50
55
|
task :jar => :compile do
|
51
|
-
ant.jar :jarfile => '
|
52
|
-
fileset :dir => 'lib'
|
56
|
+
ant.jar :jarfile => 'lib/mirahdatastore.jar' do
|
57
|
+
fileset :dir => 'lib' do
|
58
|
+
exclude :name => '*.jar'
|
59
|
+
end
|
53
60
|
fileset :dir => 'build'
|
54
61
|
end
|
55
62
|
end
|
@@ -64,4 +71,4 @@ task :test => :compile_test do
|
|
64
71
|
formatter :type => 'plain', :usefile => 'false'
|
65
72
|
end
|
66
73
|
end
|
67
|
-
end
|
74
|
+
end
|
data/lib/mirah_model.rb
ADDED
@@ -1,5 +1,5 @@
|
|
1
1
|
module AppEngine
|
2
|
-
class
|
2
|
+
class MirahDatastorePlugin
|
3
3
|
@models = {}
|
4
4
|
|
5
5
|
TypeMap = {
|
@@ -51,7 +51,7 @@ module AppEngine
|
|
51
51
|
}
|
52
52
|
|
53
53
|
class ModelState
|
54
|
-
include
|
54
|
+
include Mirah::AST
|
55
55
|
attr_reader :kind, :query, :read, :save, :transformer
|
56
56
|
|
57
57
|
def initialize(transformer, klass, parent, position, ast)
|
@@ -109,7 +109,7 @@ module AppEngine
|
|
109
109
|
self
|
110
110
|
end
|
111
111
|
EOF
|
112
|
-
[
|
112
|
+
[Mirah::AST.type(nil, 'com.google.appengine.ext.mirah.db.DQuery'),
|
113
113
|
eval(classdef, queryinit)]
|
114
114
|
end
|
115
115
|
ast << @query
|
@@ -131,7 +131,7 @@ module AppEngine
|
|
131
131
|
end
|
132
132
|
EOF
|
133
133
|
@get_properties = get_properties.body.children[1] =
|
134
|
-
|
134
|
+
Mirah::AST::Body.new(get_properties.body, position)
|
135
135
|
ast << get_properties
|
136
136
|
update = eval(parent, <<-EOF)
|
137
137
|
def update(properties:Map)
|
@@ -260,7 +260,7 @@ module AppEngine
|
|
260
260
|
end
|
261
261
|
|
262
262
|
def self.find_class(node)
|
263
|
-
node = node.parent until
|
263
|
+
node = node.parent until Mirah::AST::ClassDefinition === node
|
264
264
|
node
|
265
265
|
end
|
266
266
|
|
@@ -275,9 +275,9 @@ module AppEngine
|
|
275
275
|
end
|
276
276
|
|
277
277
|
def self.from_datastore(type, value)
|
278
|
-
|
279
|
-
if
|
280
|
-
default = Defaults.fetch(type, "#{
|
278
|
+
mirah_type = TypeMap[type]
|
279
|
+
if mirah_type
|
280
|
+
default = Defaults.fetch(type, "#{mirah_type}(nil)")
|
281
281
|
conversion = Conversions[type]
|
282
282
|
"(#{value} ? #{type}(#{value}).#{conversion} : #{default})"
|
283
283
|
else
|
@@ -296,7 +296,7 @@ module AppEngine
|
|
296
296
|
type = type.name
|
297
297
|
type = 'Long' if type == 'Integer'
|
298
298
|
|
299
|
-
result =
|
299
|
+
result = Mirah::AST::ScopedBody.new(parent, fcall.position) {[]}
|
300
300
|
result.static_scope = fcall.scope.static_scope
|
301
301
|
klass = find_class(parent)
|
302
302
|
unless @models[klass]
|
@@ -305,10 +305,10 @@ module AppEngine
|
|
305
305
|
end
|
306
306
|
model = @models[klass]
|
307
307
|
|
308
|
-
|
309
|
-
coercion = "coerce_" +
|
308
|
+
mirah_type = TypeMap.fetch(type, type)
|
309
|
+
coercion = "coerce_" + mirah_type.downcase.sub("[]", "s")
|
310
310
|
|
311
|
-
if
|
311
|
+
if mirah_type == 'List'
|
312
312
|
model.extend_query(<<-EOF)
|
313
313
|
def #{name}(value:Object)
|
314
314
|
returns :void
|
@@ -317,7 +317,7 @@ module AppEngine
|
|
317
317
|
EOF
|
318
318
|
else
|
319
319
|
model.extend_query(<<-EOF)
|
320
|
-
def #{name}(value:#{
|
320
|
+
def #{name}(value:#{mirah_type})
|
321
321
|
returns :void
|
322
322
|
_query.addFilter("#{name}", _eq_op, #{to_datastore(type, 'value')})
|
323
323
|
end
|
@@ -339,7 +339,7 @@ module AppEngine
|
|
339
339
|
EOF
|
340
340
|
|
341
341
|
model.extend_get_properties(<<-EOF)
|
342
|
-
result.put("#{name}", #{maybe_box(
|
342
|
+
result.put("#{name}", #{maybe_box(mirah_type, 'self.' + name)})
|
343
343
|
EOF
|
344
344
|
|
345
345
|
result << model.eval(parent, <<-EOF)
|
@@ -347,7 +347,7 @@ module AppEngine
|
|
347
347
|
@#{name}
|
348
348
|
end
|
349
349
|
|
350
|
-
def #{name}=(value:#{
|
350
|
+
def #{name}=(value:#{mirah_type})
|
351
351
|
@#{name} = value
|
352
352
|
end
|
353
353
|
|
@@ -359,9 +359,9 @@ module AppEngine
|
|
359
359
|
result
|
360
360
|
end
|
361
361
|
|
362
|
-
def self.maybe_box(
|
363
|
-
if Boxes.include?(
|
364
|
-
"#{Boxes[
|
362
|
+
def self.maybe_box(mirah_type, value)
|
363
|
+
if Boxes.include?(mirah_type)
|
364
|
+
"#{Boxes[mirah_type]}.valueOf(#{value})"
|
365
365
|
else
|
366
366
|
value
|
367
367
|
end
|
@@ -371,5 +371,5 @@ module AppEngine
|
|
371
371
|
@models = {}
|
372
372
|
end
|
373
373
|
end
|
374
|
-
::
|
374
|
+
::Mirah.plugins << MirahDatastorePlugin
|
375
375
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/model_test.mirah
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
package com.google.appengine.ext.
|
1
|
+
package com.google.appengine.ext.mirah.db
|
2
2
|
|
3
3
|
import com.google.appengine.tools.development.testing.LocalDatastoreServiceTestConfig
|
4
4
|
import com.google.appengine.tools.development.testing.LocalServiceTestConfig
|
@@ -112,4 +112,4 @@ class ModelTest
|
|
112
112
|
assertEquals(e.key, e2.key)
|
113
113
|
end
|
114
114
|
# TODO more tests.
|
115
|
-
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mirah_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
version: 0.0.1
|
4
|
+
prerelease:
|
5
|
+
version: 0.0.2
|
10
6
|
platform: java
|
11
7
|
authors:
|
12
8
|
- Ryan Brown
|
@@ -14,34 +10,28 @@ autorequire:
|
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
12
|
|
17
|
-
date:
|
13
|
+
date: 2011-02-15 18:45:32.018000 -07:00
|
18
14
|
default_executable:
|
19
15
|
dependencies:
|
20
16
|
- !ruby/object:Gem::Dependency
|
21
17
|
name: mirah
|
22
18
|
prerelease: false
|
23
19
|
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
+
none: false
|
24
21
|
requirements:
|
25
|
-
- - "
|
22
|
+
- - "="
|
26
23
|
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
- 0
|
30
|
-
- 4
|
31
|
-
version: 0.0.4
|
24
|
+
version: 0.0.5
|
32
25
|
type: :runtime
|
33
26
|
version_requirements: *id001
|
34
27
|
- !ruby/object:Gem::Dependency
|
35
28
|
name: appengine-sdk
|
36
29
|
prerelease: false
|
37
30
|
requirement: &id002 !ruby/object:Gem::Requirement
|
31
|
+
none: false
|
38
32
|
requirements:
|
39
33
|
- - ~>
|
40
34
|
- !ruby/object:Gem::Version
|
41
|
-
segments:
|
42
|
-
- 1
|
43
|
-
- 4
|
44
|
-
- 0
|
45
35
|
version: 1.4.0
|
46
36
|
type: :runtime
|
47
37
|
version_requirements: *id002
|
@@ -55,11 +45,13 @@ extensions: []
|
|
55
45
|
extra_rdoc_files:
|
56
46
|
- README.md
|
57
47
|
files:
|
48
|
+
- lib/mirah_model.rb
|
49
|
+
- lib/mirahdatastore.jar
|
58
50
|
- lib/mirah_model/datastore.rb
|
59
51
|
- test/model_test.mirah
|
60
|
-
- test/com/google/appengine/ext/
|
61
|
-
- test/com/google/appengine/ext/
|
62
|
-
- test/com/google/appengine/ext/
|
52
|
+
- test/com/google/appengine/ext/mirah/db/ModelTest.class
|
53
|
+
- test/com/google/appengine/ext/mirah/db/TestModel$Query.class
|
54
|
+
- test/com/google/appengine/ext/mirah/db/TestModel.class
|
63
55
|
- README.md
|
64
56
|
- Rakefile
|
65
57
|
has_rdoc: true
|
@@ -73,23 +65,21 @@ rdoc_options:
|
|
73
65
|
require_paths:
|
74
66
|
- lib
|
75
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
76
69
|
requirements:
|
77
70
|
- - ">="
|
78
71
|
- !ruby/object:Gem::Version
|
79
|
-
segments:
|
80
|
-
- 0
|
81
72
|
version: "0"
|
82
73
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
83
75
|
requirements:
|
84
76
|
- - ">="
|
85
77
|
- !ruby/object:Gem::Version
|
86
|
-
segments:
|
87
|
-
- 0
|
88
78
|
version: "0"
|
89
79
|
requirements: []
|
90
80
|
|
91
81
|
rubyforge_project:
|
92
|
-
rubygems_version: 1.
|
82
|
+
rubygems_version: 1.5.0
|
93
83
|
signing_key:
|
94
84
|
specification_version: 3
|
95
85
|
summary: Mirah Model is a ORM library for App Engine's datastore.
|