opal-activesupport 0.0.5 → 0.1.0

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
  SHA1:
3
- metadata.gz: 1ada2f6b09639af729c6954a460c6863dc05ddba
4
- data.tar.gz: b89c1416881f3758ad8abde63d0ad8f806348522
3
+ metadata.gz: 68c3aa1ca269d78c62c238b7d32662a999ab0078
4
+ data.tar.gz: 5d55aed5af016912fdaabf71ac1a9470a153e01c
5
5
  SHA512:
6
- metadata.gz: 203f596c22653e4761384135f68ae4ffb918cbc068986cde6007666ed17f2942bcbba8622e474b11d75614947a73845802f28e6592ae43496bcd8c5833ed2901
7
- data.tar.gz: 09b672496f995d6a756654425de73b64366b37b9fc50297e3e853402a01785dd537f62fcd3da206384cd4e0c4b7239d02df7b2e8c0f26301a81aeff60feb51f9
6
+ metadata.gz: c17e86c15b2d703f89eb8a6ef63719fff43ecaf245917a4b7ed6327e4253c4511004466228b9368b5730d9126c1406adcabdf57c6a5fa851d210f0e0983f7f73
7
+ data.tar.gz: f5f730351e43750e5a06747bbb2528776fe6cbf488eec25dbadeae2d309eb83a0b9fd5f4dc4012b2b91bdf797d60013dceaac09033a7c64c44b148adb8a729c8
data/Gemfile CHANGED
@@ -1,5 +1,2 @@
1
1
  source 'https://rubygems.org'
2
-
3
2
  gemspec
4
-
5
- gem 'opal', '~> 0.5.0'
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- # Opal::Activesupport
1
+ # Opal: ActiveSupport
2
2
 
3
- TODO: Write a gem description
3
+ > @AstonJ But it's vanilla Ruby. It's not like you have ActiveSupport available, which somewhat defeats it for me.
4
+ — @dhh, https://twitter.com/dhh/status/260783823254601728
4
5
 
5
6
  ## Installation
6
7
 
@@ -16,9 +17,17 @@ Or install it yourself as:
16
17
 
17
18
  $ gem install opal-activesupport
18
19
 
20
+
19
21
  ## Usage
20
22
 
21
- TODO: Write usage instructions here
23
+ Inside your `application.js.rb`:
24
+
25
+ ```ruby
26
+ require 'active_support' # to require the whole active support lib
27
+ require 'active_support/core_ext' # require only the corelib extensions
28
+ require 'active_support/core_ext/string' # require only the corelib extensions
29
+ ```
30
+
22
31
 
23
32
  ## Contributing
24
33
 
@@ -1,5 +1,5 @@
1
1
  module Opal
2
2
  module Activesupport
3
- VERSION = '0.0.5'
3
+ VERSION = '0.1.0'
4
4
  end
5
5
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |gem|
20
20
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
21
  gem.require_paths = ['lib']
22
22
 
23
- gem.add_dependency 'opal'
23
+ gem.add_dependency 'opal', ['>= 0.5.0', '< 1.0.0']
24
+ gem.add_development_dependency 'opal-rspec', '~> 0.4.0'
24
25
  gem.add_development_dependency 'rake'
25
- gem.add_development_dependency 'opal-rspec'
26
26
  end
@@ -1,2 +1,5 @@
1
- require 'active_support/core_ext/string'
1
+ require 'active_support/core_ext/enumerable'
2
+ require 'active_support/core_ext/integer'
3
+ require 'active_support/core_ext/numeric'
2
4
  require 'active_support/core_ext/object'
5
+ require 'active_support/core_ext/string'
@@ -0,0 +1,32 @@
1
+ module Enumerable
2
+ def index_by(&block)
3
+ return enum_for :index_by unless block_given?
4
+
5
+ hash = Hash.new
6
+
7
+ %x{
8
+ var result;
9
+
10
+ self.$each._p = function() {
11
+ var param = #{Opal.destructure(`arguments`)},
12
+ value = $opal.$yield1(block, param);
13
+
14
+ if (value === $breaker) {
15
+ result = $breaker.$v;
16
+ return $breaker;
17
+ }
18
+
19
+ #{hash[`value`] = `param`};
20
+ }
21
+
22
+ self.$each();
23
+
24
+ if (result !== undefined) {
25
+ return result;
26
+ }
27
+ }
28
+
29
+ hash
30
+ end
31
+
32
+ end
@@ -0,0 +1,37 @@
1
+ require 'json'
2
+
3
+ class Object
4
+ def as_json
5
+ nil
6
+ end
7
+ end
8
+
9
+ class Boolean
10
+ def as_json
11
+ self
12
+ end
13
+ end
14
+
15
+ class NilClass
16
+ def as_json
17
+ self
18
+ end
19
+ end
20
+
21
+ class Numeric
22
+ def as_json
23
+ self
24
+ end
25
+ end
26
+
27
+ class String
28
+ def as_json
29
+ self
30
+ end
31
+ end
32
+
33
+ class Array
34
+ def as_json(options = nil) #:nodoc:
35
+ map { |v| options ? v.as_json(options.dup) : v.as_json }
36
+ end
37
+ end
@@ -4,9 +4,9 @@ class String
4
4
  end
5
5
 
6
6
  def dasherize
7
- `#{self}.replace(/[-_\\s]+/g, '-')
8
- .replace(/([A-Z\\d]+)([A-Z][a-z])/g, '$1-$2')
9
- .replace(/([a-z\\d])([A-Z])/g, '$1-$2')
7
+ `#{self}.replace(/[-_\s]+/g, '-')
8
+ .replace(/([A-Z\d]+)([A-Z][a-z])/g, '$1-$2')
9
+ .replace(/([a-z\d])([A-Z])/g, '$1-$2')
10
10
  .toLowerCase()`
11
11
  end
12
12
 
@@ -23,9 +23,9 @@ class String
23
23
  end
24
24
 
25
25
  def underscore
26
- `#{self}.replace(/[-\\s]+/g, '_')
27
- .replace(/([A-Z\\d]+)([A-Z][a-z])/g, '$1_$2')
28
- .replace(/([a-z\\d])([A-Z])/g, '$1_$2')
26
+ `#{self}.replace(/[-\s]+/g, '_')
27
+ .replace(/([A-Z\d]+)([A-Z][a-z])/g, '$1_$2')
28
+ .replace(/([a-z\d])([A-Z])/g, '$1_$2')
29
29
  .replace(/-/g, '_')
30
30
  .toLowerCase()`
31
31
  end
@@ -37,5 +37,4 @@ class String
37
37
  })`
38
38
  end
39
39
  alias_method :camelcase, :camelize
40
-
41
40
  end
@@ -0,0 +1,9 @@
1
+ class String
2
+ def pluralize
3
+ ActiveSupport::Inflector.pluralize(self)
4
+ end
5
+
6
+ def singularize
7
+ ActiveSupport::Inflector.singularize(self)
8
+ end
9
+ end
@@ -0,0 +1,62 @@
1
+ module ActiveSupport
2
+ Inflector.inflections(:en) do |inflect|
3
+ inflect.plural(/$/, 's')
4
+ inflect.plural(/s$/i, 's')
5
+ inflect.plural(/^(ax|test)is$/i, '\1es')
6
+ inflect.plural(/(octop|vir)us$/i, '\1i')
7
+ inflect.plural(/(octop|vir)i$/i, '\1i')
8
+ inflect.plural(/(alias|status)$/i, '\1es')
9
+ inflect.plural(/(bu)s$/i, '\1ses')
10
+ inflect.plural(/(buffal|tomat)o$/i, '\1oes')
11
+ inflect.plural(/([ti])um$/i, '\1a')
12
+ inflect.plural(/([ti])a$/i, '\1a')
13
+ inflect.plural(/sis$/i, 'ses')
14
+ inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
15
+ inflect.plural(/(hive)$/i, '\1s')
16
+ inflect.plural(/([^aeiouy]|qu)y$/i, '\1ies')
17
+ inflect.plural(/(x|ch|ss|sh)$/i, '\1es')
18
+ inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices')
19
+ inflect.plural(/^(m|l)ouse$/i, '\1ice')
20
+ inflect.plural(/^(m|l)ice$/i, '\1ice')
21
+ inflect.plural(/^(ox)$/i, '\1en')
22
+ inflect.plural(/^(oxen)$/i, '\1')
23
+ inflect.plural(/(quiz)$/i, '\1zes')
24
+
25
+ inflect.singular(/s$/i, '')
26
+ inflect.singular(/(ss)$/i, '\1')
27
+ inflect.singular(/(n)ews$/i, '\1ews')
28
+ inflect.singular(/([ti])a$/i, '\1um')
29
+ inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$/i, '\1sis')
30
+ inflect.singular(/(^analy)(sis|ses)$/i, '\1sis')
31
+ inflect.singular(/([^f])ves$/i, '\1fe')
32
+ inflect.singular(/(hive)s$/i, '\1')
33
+ inflect.singular(/(tive)s$/i, '\1')
34
+ inflect.singular(/([lr])ves$/i, '\1f')
35
+ inflect.singular(/([^aeiouy]|qu)ies$/i, '\1y')
36
+ inflect.singular(/(s)eries$/i, '\1eries')
37
+ inflect.singular(/(m)ovies$/i, '\1ovie')
38
+ inflect.singular(/(x|ch|ss|sh)es$/i, '\1')
39
+ inflect.singular(/^(m|l)ice$/i, '\1ouse')
40
+ inflect.singular(/(bus)(es)?$/i, '\1')
41
+ inflect.singular(/(o)es$/i, '\1')
42
+ inflect.singular(/(shoe)s$/i, '\1')
43
+ inflect.singular(/(cris|test)(is|es)$/i, '\1is')
44
+ inflect.singular(/^(a)x[ie]s$/i, '\1xis')
45
+ inflect.singular(/(octop|vir)(us|i)$/i, '\1us')
46
+ inflect.singular(/(alias|status)(es)?$/i, '\1')
47
+ inflect.singular(/^(ox)en/i, '\1')
48
+ inflect.singular(/(vert|ind)ices$/i, '\1ex')
49
+ inflect.singular(/(matr)ices$/i, '\1ix')
50
+ inflect.singular(/(quiz)zes$/i, '\1')
51
+ inflect.singular(/(database)s$/i, '\1')
52
+
53
+ inflect.irregular('person', 'people')
54
+ inflect.irregular('man', 'men')
55
+ inflect.irregular('child', 'children')
56
+ inflect.irregular('sex', 'sexes')
57
+ inflect.irregular('move', 'moves')
58
+ inflect.irregular('zombie', 'zombies')
59
+
60
+ inflect.uncountable(%w(equipment information rice money species series fish sheep jeans police))
61
+ end
62
+ end
@@ -0,0 +1,2 @@
1
+ require 'active_support/inflector/inflections'
2
+ require 'active_support/inflections'
@@ -0,0 +1,67 @@
1
+ module ActiveSupport
2
+ module Inflector
3
+ extend self
4
+
5
+ def inflections
6
+ if block_given?
7
+ yield Inflections.instance
8
+ else
9
+ Inflections.instance
10
+ end
11
+ end
12
+
13
+ def pluralize(word)
14
+ apply_inflections(word, inflections.plurals)
15
+ end
16
+
17
+ def singularize(word)
18
+ apply_inflections(word, inflections.singulars)
19
+ end
20
+
21
+ def apply_inflections(word, rules)
22
+ result = word.to_s
23
+
24
+ if inflections.uncountables.include?(result.downcase)
25
+ result
26
+ else
27
+ rules.each do |rule, replacement|
28
+ changed = result.sub(rule, replacement)
29
+ unless changed == result
30
+ result = changed
31
+ break
32
+ end
33
+ end
34
+
35
+ result
36
+ end
37
+ end
38
+
39
+ class Inflections
40
+ def self.instance
41
+ @__instance__ ||= new
42
+ end
43
+
44
+ attr_reader :plurals, :singulars, :uncountables
45
+
46
+ def initialize
47
+ @plurals, @singulars, @uncountables = [], [], Set.new
48
+ end
49
+
50
+ def plural(rule, replacement)
51
+ @plurals.unshift([rule, replacement])
52
+ end
53
+
54
+ def singular(rule, replacement)
55
+ @singulars.unshift([rule, replacement])
56
+ end
57
+
58
+ def uncountable(words)
59
+ words.each { |w| @uncountables << w.downcase }
60
+ end
61
+
62
+ def irregular()
63
+
64
+ end
65
+ end
66
+ end
67
+ end
@@ -1,5 +1,6 @@
1
1
  require 'opal-rspec'
2
2
  require 'opal-activesupport'
3
+ require 'active_support/inflector'
3
4
 
4
5
  module TestUnitHelpers
5
6
  def assert_equal actual, expected
metadata CHANGED
@@ -1,55 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opal-activesupport
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-05 00:00:00.000000000 Z
11
+ date: 2015-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 0.5.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '>='
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
- version: '0'
29
+ version: 0.5.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.0
27
33
  - !ruby/object:Gem::Dependency
28
- name: rake
34
+ name: opal-rspec
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - '>='
37
+ - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '0'
39
+ version: 0.4.0
34
40
  type: :development
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - '>='
44
+ - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '0'
46
+ version: 0.4.0
41
47
  - !ruby/object:Gem::Dependency
42
- name: opal-rspec
48
+ name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - '>='
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - '>='
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  description: The port of the glorious ActiveSupport for Opal
@@ -59,7 +65,7 @@ executables: []
59
65
  extensions: []
60
66
  extra_rdoc_files: []
61
67
  files:
62
- - .gitignore
68
+ - ".gitignore"
63
69
  - Gemfile
64
70
  - LICENSE.txt
65
71
  - README.md
@@ -70,6 +76,7 @@ files:
70
76
  - opal-activesupport.gemspec
71
77
  - opal/active_support.rb
72
78
  - opal/active_support/core_ext.rb
79
+ - opal/active_support/core_ext/enumerable.rb
73
80
  - opal/active_support/core_ext/integer.rb
74
81
  - opal/active_support/core_ext/integer/time.rb
75
82
  - opal/active_support/core_ext/numeric.rb
@@ -77,7 +84,12 @@ files:
77
84
  - opal/active_support/core_ext/numeric/time.rb
78
85
  - opal/active_support/core_ext/object.rb
79
86
  - opal/active_support/core_ext/object/blank.rb
87
+ - opal/active_support/core_ext/object/json.rb
80
88
  - opal/active_support/core_ext/string.rb
89
+ - opal/active_support/core_ext/string/inflections.rb
90
+ - opal/active_support/inflections.rb
91
+ - opal/active_support/inflector.rb
92
+ - opal/active_support/inflector/inflections.rb
81
93
  - opal/active_support/time.rb
82
94
  - opal/opal-activesupport.rb
83
95
  - spec/core_ext/numeric_spec.rb
@@ -91,26 +103,26 @@ licenses: []
91
103
  metadata: {}
92
104
  post_install_message:
93
105
  rdoc_options:
94
- - --main
106
+ - "--main"
95
107
  - README
96
- - --line-numbers
97
- - --include
108
+ - "--line-numbers"
109
+ - "--include"
98
110
  - opal
99
111
  require_paths:
100
112
  - lib
101
113
  required_ruby_version: !ruby/object:Gem::Requirement
102
114
  requirements:
103
- - - '>='
115
+ - - ">="
104
116
  - !ruby/object:Gem::Version
105
117
  version: '0'
106
118
  required_rubygems_version: !ruby/object:Gem::Requirement
107
119
  requirements:
108
- - - '>='
120
+ - - ">="
109
121
  - !ruby/object:Gem::Version
110
122
  version: '0'
111
123
  requirements: []
112
124
  rubyforge_project:
113
- rubygems_version: 2.1.2
125
+ rubygems_version: 2.4.5
114
126
  signing_key:
115
127
  specification_version: 4
116
128
  summary: The port of the glorious ActiveSupport for Opal
@@ -121,3 +133,4 @@ test_files:
121
133
  - spec/empty_bool.rb
122
134
  - spec/inflector_test_cases.rb
123
135
  - spec/spec_helper.rb
136
+ has_rdoc: