spik 0.0.2 → 0.0.3
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.rdoc +2 -2
- data/lib/spik.rb +5 -38
- data/lib/spik/validators.rb +63 -0
- data/lib/spik/version.rb +1 -1
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +13 -0
- metadata +10 -14
- data/lib/spik/tmp.rb +0 -50
- data/test/integration/missing_method_test.rb +0 -12
- data/test/spik_test.rb +0 -13
- data/test/test_helper.rb +0 -10
data/README.rdoc
CHANGED
@@ -260,13 +260,13 @@ After that you can work with variables @post and @posts:
|
|
260
260
|
Puts this line into `Gemfile` then run `$ bundle`:
|
261
261
|
|
262
262
|
``` ruby
|
263
|
-
gem 'spik', '0.0.
|
263
|
+
gem 'spik', '0.0.3'
|
264
264
|
```
|
265
265
|
|
266
266
|
Or if you are old-school Rails 2 developer put this into `config/environment.rb` and run `$ rake gems:install`:
|
267
267
|
|
268
268
|
``` ruby
|
269
|
-
config.gem 'spik', :version => '0.0.
|
269
|
+
config.gem 'spik', :version => '0.0.3'
|
270
270
|
```
|
271
271
|
|
272
272
|
Or manually install spik gem: `$ gem install spik`
|
data/lib/spik.rb
CHANGED
@@ -1,50 +1,17 @@
|
|
1
1
|
require 'spik/models'
|
2
2
|
require 'spik/execution'
|
3
|
+
require 'spik/validators'
|
3
4
|
|
4
5
|
module Spik
|
5
6
|
include Models
|
6
7
|
include Execution
|
7
|
-
|
8
|
-
WHICH_NAMES = %w(all first)
|
9
|
-
METHOD_NAMES = %w(find delete)
|
8
|
+
include Validators
|
10
9
|
|
11
10
|
def method_missing(method, *args)
|
12
11
|
args.flatten! if args.is_a? Array
|
13
12
|
method = method.to_s
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
[method[0..-2], args]
|
18
|
-
elsif WHICH_NAMES.include?(method)
|
19
|
-
if args[0] !~ /@/
|
20
|
-
[method, args].flatten
|
21
|
-
else
|
22
|
-
args[0]
|
23
|
-
end
|
24
|
-
elsif METHOD_NAMES.include?(method)
|
25
|
-
if args[0] !~ /@/
|
26
|
-
execute_method(method, args)
|
27
|
-
else
|
28
|
-
instance_variable_get(args[0])
|
29
|
-
end
|
30
|
-
elsif !attributes.select{ |k,v| v.include? method }.empty?
|
31
|
-
if args[0] == 'like'
|
32
|
-
method + ' LIKE "%' + args[1] + '%"'
|
33
|
-
elsif args[0].is_a? String
|
34
|
-
method + ' = \'' + args[0] + '\''
|
35
|
-
else
|
36
|
-
method + ' = ' + args[0].to_s
|
37
|
-
end
|
38
|
-
elsif !class_methods.select{ |k,v| v.include? method.to_sym }.empty?
|
39
|
-
execute_class_method(method, args[0], args[1])
|
40
|
-
elsif method == 'like'
|
41
|
-
[method, args]
|
42
|
-
elsif %w(with which has have who from).include? method
|
43
|
-
args.flatten
|
44
|
-
elsif method == 'as'
|
45
|
-
['as__' + args[0], args[1..-1]]
|
46
|
-
else
|
47
|
-
[method, args]
|
48
|
-
end
|
13
|
+
|
14
|
+
# TODO: catch methods, which cannot be variable name
|
15
|
+
spik_method(method, args) # or raise NoMethodError.new('There is no method "' + method + '"')
|
49
16
|
end
|
50
17
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Spik
|
2
|
+
module Validators
|
3
|
+
WHICH_NAMES = %w(all first)
|
4
|
+
METHOD_NAMES = %w(find delete)
|
5
|
+
|
6
|
+
def spik_method(method, args)
|
7
|
+
if model_names.include?(method)
|
8
|
+
return_value_of(:model, method, args)
|
9
|
+
elsif model_names.include?(method[0..-2])
|
10
|
+
return_value_of(:model, method[0..-2], args)
|
11
|
+
elsif WHICH_NAMES.include?(method)
|
12
|
+
return_value_of(:which, method, args)
|
13
|
+
elsif METHOD_NAMES.include?(method)
|
14
|
+
return_value_of(:method, method, args)
|
15
|
+
elsif !attributes.select{ |k,v| v.include? method }.empty?
|
16
|
+
return_value_of(:attribute, method, args)
|
17
|
+
elsif !class_methods.select{ |k,v| v.include? method.to_sym }.empty?
|
18
|
+
return_value_of(:class_method, method, args)
|
19
|
+
elsif method == 'like'
|
20
|
+
return_value_of(:like, method, args)
|
21
|
+
elsif %w(with which has have who from).include? method
|
22
|
+
return_value_of(:keyword, method, args)
|
23
|
+
elsif method == 'as'
|
24
|
+
return_value_of(:alias, method, args)
|
25
|
+
else
|
26
|
+
return_value_of(:variable, method, args)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def return_value_of(type, method, args)
|
31
|
+
case type
|
32
|
+
when :model, :like, :variable
|
33
|
+
[method, args]
|
34
|
+
when :which
|
35
|
+
if args[0] !~ /@/
|
36
|
+
[method, args].flatten
|
37
|
+
else
|
38
|
+
args[0]
|
39
|
+
end
|
40
|
+
when :sql_method
|
41
|
+
if args[0] !~ /@/
|
42
|
+
execute_method(method, args)
|
43
|
+
else
|
44
|
+
instance_variable_get(args[0])
|
45
|
+
end
|
46
|
+
when :attribute
|
47
|
+
if args[0] == 'like'
|
48
|
+
method + ' LIKE "%' + args[1] + '%"'
|
49
|
+
elsif args[0].is_a? String
|
50
|
+
method + ' = \'' + args[0] + '\''
|
51
|
+
else
|
52
|
+
method + ' = ' + args[0].to_s
|
53
|
+
end
|
54
|
+
when :class_method
|
55
|
+
execute_class_method(method, args[0], args[1])
|
56
|
+
when :keyword
|
57
|
+
args.flatten
|
58
|
+
when :alias
|
59
|
+
['as__' + args[0], args[1..-1]]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/spik/version.rb
CHANGED
Binary file
|
@@ -1363,3 +1363,16 @@ NameError (uninitialized constant Posts):
|
|
1363
1363
|
Rendered /Users/gazay/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.1.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.5ms)
|
1364
1364
|
Rendered /Users/gazay/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.1.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.0ms)
|
1365
1365
|
Rendered /Users/gazay/.rvm/gems/ruby-1.9.3-head/gems/actionpack-3.1.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (4.9ms)
|
1366
|
+
[1m[36m (0.4ms)[0m [1mselect sqlite_version(*)[0m
|
1367
|
+
[1m[35m (0.1ms)[0m SELECT "schema_migrations"."version" FROM "schema_migrations"
|
1368
|
+
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("notices")[0m
|
1369
|
+
[1m[35m (0.0ms)[0m PRAGMA index_list("posts")
|
1370
|
+
[1m[36m (0.2ms)[0m [1mselect sqlite_version(*)[0m
|
1371
|
+
[1m[35m (1.0ms)[0m CREATE TABLE "notices" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "body" text, "created_at" datetime, "updated_at" datetime)
|
1372
|
+
[1m[36m (7.9ms)[0m [1mCREATE TABLE "posts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "body" text, "created_at" datetime, "updated_at" datetime) [0m
|
1373
|
+
[1m[35m (1.2ms)[0m CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL)
|
1374
|
+
[1m[36m (0.0ms)[0m [1mPRAGMA index_list("schema_migrations")[0m
|
1375
|
+
[1m[35m (1.2ms)[0m CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
|
1376
|
+
[1m[36m (0.1ms)[0m [1mSELECT version FROM "schema_migrations"[0m
|
1377
|
+
[1m[35m (1.1ms)[0m INSERT INTO "schema_migrations" (version) VALUES ('20111022090628')
|
1378
|
+
[1m[36m (1.1ms)[0m [1mINSERT INTO "schema_migrations" (version) VALUES ('20111022073857')[0m
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spik
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-
|
12
|
+
date: 2011-10-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153494400 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 3.1.1
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153494400
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153493980 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,7 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153493980
|
36
36
|
description: You can say something and controller understands you
|
37
37
|
email:
|
38
38
|
- alex.gaziev@gmail.com
|
@@ -42,7 +42,7 @@ extra_rdoc_files: []
|
|
42
42
|
files:
|
43
43
|
- lib/spik/execution.rb
|
44
44
|
- lib/spik/models.rb
|
45
|
-
- lib/spik/
|
45
|
+
- lib/spik/validators.rb
|
46
46
|
- lib/spik/version.rb
|
47
47
|
- lib/spik.rb
|
48
48
|
- lib/tasks/spik_tasks.rake
|
@@ -80,6 +80,7 @@ files:
|
|
80
80
|
- test/dummy/db/migrate/20111022090628_create_notices.rb
|
81
81
|
- test/dummy/db/production.sqlite3
|
82
82
|
- test/dummy/db/schema.rb
|
83
|
+
- test/dummy/db/test.sqlite3
|
83
84
|
- test/dummy/log/development.log
|
84
85
|
- test/dummy/log/production.log
|
85
86
|
- test/dummy/log/test.log
|
@@ -97,10 +98,7 @@ files:
|
|
97
98
|
- test/dummy/tmp/cache/assets/DD0/030/sprockets%2F6fea4f8c8ac6003482feb9df8afa0361
|
98
99
|
- test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
|
99
100
|
- test/dummy/tmp/cache/assets/E54/940/sprockets%2Fe5c4f565eaabc3ea3cc4006bf5b9c6ce
|
100
|
-
|
101
|
-
- test/spik_test.rb
|
102
|
-
- test/test_helper.rb
|
103
|
-
homepage:
|
101
|
+
homepage: https://github.com/gazay/spik
|
104
102
|
licenses: []
|
105
103
|
post_install_message:
|
106
104
|
rdoc_options: []
|
@@ -156,6 +154,7 @@ test_files:
|
|
156
154
|
- test/dummy/db/migrate/20111022090628_create_notices.rb
|
157
155
|
- test/dummy/db/production.sqlite3
|
158
156
|
- test/dummy/db/schema.rb
|
157
|
+
- test/dummy/db/test.sqlite3
|
159
158
|
- test/dummy/log/development.log
|
160
159
|
- test/dummy/log/production.log
|
161
160
|
- test/dummy/log/test.log
|
@@ -173,6 +172,3 @@ test_files:
|
|
173
172
|
- test/dummy/tmp/cache/assets/DD0/030/sprockets%2F6fea4f8c8ac6003482feb9df8afa0361
|
174
173
|
- test/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af
|
175
174
|
- test/dummy/tmp/cache/assets/E54/940/sprockets%2Fe5c4f565eaabc3ea3cc4006bf5b9c6ce
|
176
|
-
- test/integration/missing_method_test.rb
|
177
|
-
- test/spik_test.rb
|
178
|
-
- test/test_helper.rb
|
data/lib/spik/tmp.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
|
2
|
-
# def can(*args)
|
3
|
-
# p args.first
|
4
|
-
# end
|
5
|
-
#
|
6
|
-
# def you(*args)
|
7
|
-
# args.first
|
8
|
-
# end
|
9
|
-
#
|
10
|
-
# def say(*args)
|
11
|
-
# args.first
|
12
|
-
# end
|
13
|
-
|
14
|
-
def method_missing(m, *a)
|
15
|
-
m.to_s
|
16
|
-
end
|
17
|
-
|
18
|
-
# can you say please?
|
19
|
-
|
20
|
-
def make(*args)
|
21
|
-
p args.first
|
22
|
-
end
|
23
|
-
|
24
|
-
def me(*args)
|
25
|
-
case args.first
|
26
|
-
when 'happy!'
|
27
|
-
'smile, bitch ^_^'
|
28
|
-
else
|
29
|
-
"r u sad bastard? c'mon!!!"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def girl(*args)
|
34
|
-
case args.first
|
35
|
-
when /happy/
|
36
|
-
':P'
|
37
|
-
else
|
38
|
-
'SLAP!'
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
make me happy!
|
43
|
-
|
44
|
-
make girl happy
|
45
|
-
|
46
|
-
chain = Proc.new do |*methods|
|
47
|
-
p methods.to_s + '123'
|
48
|
-
end
|
49
|
-
|
50
|
-
p chain.call(make.to_proc)
|
data/test/spik_test.rb
DELETED
data/test/test_helper.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
# Configure Rails Environment
|
2
|
-
ENV["RAILS_ENV"] = "test"
|
3
|
-
|
4
|
-
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
5
|
-
require "rails/test_help"
|
6
|
-
|
7
|
-
Rails.backtrace_cleaner.remove_silencers!
|
8
|
-
|
9
|
-
# Load support files
|
10
|
-
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|