ecraft-extensions 0.3.1 → 0.4.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
- SHA1:
3
- metadata.gz: af3834c6d1357bfa8ffe8806ebca6545b721b971
4
- data.tar.gz: dd5b2a7a8163474d089fc226d2ab9ccd989f7f90
2
+ SHA256:
3
+ metadata.gz: 3eedda0b4814dbad903bb2eb6cc867700c5c484a976a76b92a768c217b5d81b9
4
+ data.tar.gz: f635a3e21a66a8c0adaa62b2271870de37fe7ce1fb3251672ce2dc24afb3ff2c
5
5
  SHA512:
6
- metadata.gz: 218f060f591e94b9c75c808050dc4910f414a752101b8cd8f8e9ed0a5f0165566b088a8177c8081d23d3c0bdbe04c8d2d9978e89058ea42e3cff64273fadd86e
7
- data.tar.gz: 73a4dc85bce0cc233ec878d086b9e87870346e1685b6a0ba4bc172f51d00136914e0216821c1836e53bf0113e9402070a3d0779542b5703b2ff8023512e301d4
6
+ metadata.gz: bc5369edb007040cf10a5996cef0d821d8e81f8fc54a46c4f88d5d9fe9a83fac014b9cf0a4e0d22873b0e456edc7b9f23b30e9335f88ba92ba1a939caa273447
7
+ data.tar.gz: f7a63adbbb9abb5fb5c51276814aa3ee45f7ef898291248982e5687b66efee119e6da79fc4e04981ba2e54eb34fc3e171ef9a0e197e833a75871118be9e7afcf
@@ -1,6 +1,8 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.3
3
3
  DisplayCopNames: true
4
+ DisplayStyleGuide: true
5
+ ExtraDetails: true
4
6
 
5
7
  Layout/MultilineOperationIndentation:
6
8
  EnforcedStyle: indented
@@ -30,6 +32,11 @@ Style/Documentation:
30
32
  Enabled: false
31
33
  Style/Encoding:
32
34
  Enabled: false
35
+
36
+ # Pending a Rubocop release with https://github.com/bbatsov/rubocop/issues/5245 included.
37
+ Style/FormatStringToken:
38
+ Enabled: false
39
+
33
40
  Style/NumericPredicate:
34
41
  Enabled: false
35
42
  Style/FrozenStringLiteralComment:
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.5
@@ -8,9 +8,8 @@ env:
8
8
  - "JRUBY_OPTS=--debug"
9
9
 
10
10
  before_install:
11
- - rm -rf ~/.rvm && if [ ! -d "$HOME/jruby-bin" ]; then mkdir -p ~/jruby-bin && pushd ~/jruby-bin && curl -o- -L https://s3.amazonaws.com/jruby.org/downloads/9.1.8.0/jruby-bin-9.1.8.0.tar.gz | tar xzf - --strip-components=1 && popd ; fi
11
+ - rm -rf ~/.rvm && if [ ! -d "$HOME/jruby-bin" ]; then mkdir -p ~/jruby-bin && pushd ~/jruby-bin && curl -o- -L https://s3.amazonaws.com/jruby.org/downloads/9.1.15.0/jruby-bin-9.1.15.0.tar.gz | tar xzf - --strip-components=1 && popd ; fi
12
12
  - export PATH="$HOME/jruby-bin/bin:$PATH"
13
13
  - gem install bundler
14
- - gem update --system
15
14
 
16
15
  cache: bundler
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in ecraft-web-dsl-builtins.gemspec
4
3
  gemspec
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  This code contains some useful extension methods to various Ruby classes.
6
6
 
7
- It also contains a few mixins in the `Ecraft::Extensions::Mixins` module.
7
+ It also contains a mixin in the `Ecraft::Extensions::Mixins` module.
8
8
 
9
9
  ## Installation
10
10
 
@@ -24,25 +24,20 @@ Or install it yourself as:
24
24
 
25
25
  ## Usage
26
26
 
27
- Preferred approach:
28
-
29
27
  ```ruby
30
28
  # To load a specific extension:
31
29
  require 'ecraft/extensions/bigdecimal'
32
30
  ```
33
31
 
34
- Not-so-preferred approach:
32
+ ## Development
35
33
 
36
- ```ruby
37
- # To load _all_ core extensions. USE WITH GREAT CARE, since this could cause conflicts with other libraries.
38
- require 'ecraft/extensions/all'
39
- ```
34
+ After checking out the repo, run `bin/setup` to install dependencies.
40
35
 
41
- ## Development
36
+ Then, run `rake spec` to run the tests.
42
37
 
43
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
38
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
44
39
 
45
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
40
+ To install this gem onto your local machine, run `bundle exec rake install`.
46
41
 
47
42
  ## Contributing
48
43
 
@@ -52,29 +47,27 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/ecraft
52
47
 
53
48
  We strive to write documentation inline in [YARD](http://yardoc.org) format.
54
49
 
55
- ### Previewing documentation locally
50
+ ### Preview documentation locally
51
+
56
52
  ```
57
53
  bundle exec yard server -r
58
54
  ```
59
55
 
60
- Check the locally served documentation at http://localhost:8808/
56
+ Check the locally served documentation at [http://localhost:8808/](http://localhost:8808/).
61
57
 
62
58
  ### Releasing a new version
63
59
 
64
60
  - Bump the version in `version.rb`
65
61
  - Create the tag:
66
-
67
62
  ```
68
- $ git release v1.0.x`
63
+ $ git release v1.0.x
69
64
  ```
70
-
71
- - Build the gemfile and push it to Rubygems.org:
72
-
65
+ - Build the `.gem` file and push it to Rubygems.org:
73
66
  ```shell
74
67
  $ bundle exec rake build release
75
68
  ```
76
-
77
- - Generate the changelog (`cargo install changelog-rs && changelog-rs .`) and copy the relevant lines to [the releases page](https://github.com/ecraft/ecraft-extensions/releases).
69
+ - Generate the changelog (`cargo install changelog-rs && changelog-rs .`) and
70
+ copy the relevant lines to [the releases page](https://github.com/ecraft/ecraft-extensions/releases).
78
71
 
79
72
  ### License
80
73
 
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'irb'
4
+ require 'irb/completion' # easy tab completion
5
+
6
+ require 'bundler/setup'
7
+ Bundler.require
8
+
9
+ $LOAD_PATH << './lib'
10
+
11
+ require 'ecraft/extensions'
12
+ require 'ecraft/extensions/bigdecimal'
13
+ require 'ecraft/extensions/date'
14
+ require 'ecraft/extensions/datetime'
15
+ require 'ecraft/extensions/ostruct'
16
+ require 'ecraft/extensions/string'
17
+ require 'ecraft/extensions/time'
18
+
19
+ puts "<#{$PROGRAM_NAME}> Starting IRB with each file in ecraft/extensions/ required"
20
+ puts
21
+ puts "<#{$PROGRAM_NAME}> To try the mixin, require 'ecraft/extensions/mixins/hashable'"
22
+
23
+ IRB.start
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env sh
2
+
3
+ echo "<$0> Installing prerequisites..."
4
+
5
+ which bundler || gem install bundler
6
+ bundle check || bundle install
7
+
8
+ echo "<$0> Done installing prerequisites!"
9
+ echo
10
+ echo "Explore this library using bin/console - an IRB with lib/ in the \$LOAD_PATH and this library required."
11
+ echo
@@ -1,6 +1,6 @@
1
1
  # coding: utf-8
2
2
 
3
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'ecraft/extensions/version'
6
6
 
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'guard-rspec', '~> 4.7'
29
29
  spec.add_development_dependency 'rake'
30
30
  spec.add_development_dependency 'rspec'
31
- spec.add_development_dependency 'rubocop', '~> 0.47'
31
+ spec.add_development_dependency 'rubocop', '~> 0.51'
32
32
  spec.add_development_dependency 'simplecov'
33
33
  spec.add_development_dependency 'yard'
34
34
  end
@@ -23,7 +23,7 @@ class ::BigDecimal
23
23
  # Values without any fraction digits will use `Fixnum` form, where values with a fractional part will use `Float` form.
24
24
  #
25
25
  # @return [String]
26
- def to_json(*_a)
26
+ def to_json(*_args)
27
27
  to_s
28
28
  end
29
29
 
@@ -31,14 +31,14 @@ class ::BigDecimal
31
31
  #
32
32
  # Values without any fraction digits will use `Fixnum` form, where values with a fractional part will use `Float` form.
33
33
  #
34
- # @param s [String] The format that should be used for the conversion. If provided, the original `to_s` implementation will be
35
- # called using this parameter to provide the same semantics as the original method.
34
+ # @param string_format [String] The format that should be used for the conversion. If provided, the original `to_s`
35
+ # implementation will be called using this parameter to provide the same semantics as the original method.
36
36
  # @return [String]
37
- def to_s(s = nil)
38
- if s.nil?
37
+ def to_s(string_format = nil)
38
+ if string_format.nil?
39
39
  to_s_original('F').gsub(/\.0$/, '')
40
40
  else
41
- to_s_original(s)
41
+ to_s_original(string_format)
42
42
  end
43
43
  end
44
44
  end
@@ -47,13 +47,13 @@ module Ecraft
47
47
  end
48
48
  end
49
49
 
50
- def value_type?(v)
51
- v.is_a?(BigDecimal) ||
52
- v.is_a?(Integer) ||
53
- v.is_a?(Float) ||
54
- v.is_a?(String) ||
55
- v.is_a?(TrueClass) ||
56
- v.is_a?(FalseClass)
50
+ def value_type?(value)
51
+ value.is_a?(BigDecimal) ||
52
+ value.is_a?(Integer) ||
53
+ value.is_a?(Float) ||
54
+ value.is_a?(String) ||
55
+ value.is_a?(TrueClass) ||
56
+ value.is_a?(FalseClass)
57
57
  end
58
58
 
59
59
  def strip_string_recurse_enumerable_values(hash)
@@ -1,7 +1,7 @@
1
1
  require 'ostruct'
2
2
 
3
3
  class ::OpenStruct
4
- def to_json(*_a)
4
+ def to_json(*_args)
5
5
  marshal_dump.to_json
6
6
  end
7
7
  end
@@ -1,21 +1,9 @@
1
1
  class ::String
2
2
  # These methods should not be used in new code
3
- # Instead use https://github.com/ecraft/ecraft.uxfactory.server/blob/master/documentation/upgrading-from-facets.md
3
+ # Instead use the examples provided.
4
4
 
5
- # require 'active_support'
6
- # require 'active_support/core_ext/string/inflections'
5
+ # Don't use! Instead, write like this:
7
6
  #
8
- # 'active_support_string'.camelize # result: "ActiveSupportString"
9
- def to_camelcase
10
- separators = ['_', '\s']
11
- str = dup
12
- separators.each do |s|
13
- str = str.gsub(/(?:#{s}+)([a-z])/) { Regexp.last_match(1).upcase }
14
- end
15
- str = str.gsub(/(\A|\s)([a-z])/) { Regexp.last_match(1) + Regexp.last_match(2).upcase }
16
- str
17
- end
18
-
19
7
  # require 'active_support'
20
8
  # require 'active_support/core_ext/string/inflections'
21
9
  #
@@ -24,20 +12,6 @@ class ::String
24
12
  gsub(/\B[A-Z]/, '_\&').downcase
25
13
  end
26
14
 
27
- # require 'active_support'
28
- # require 'active_support/core_ext/string/inflections'
29
- # 'Foo::Bar'.constantize # => Foo::Bar
30
- def to_class
31
- chain = split '::'
32
- klass = Kernel
33
- chain.each do |klass_string|
34
- klass = klass.const_get klass_string
35
- end
36
- klass.is_a?(Class) ? klass : nil
37
- rescue NameError
38
- nil
39
- end
40
-
41
15
  def to_bool
42
16
  !self !~ /^(true|t|yes|y|1)$/i
43
17
  end
@@ -1,12 +1,13 @@
1
1
  require 'json'
2
2
  require 'json/add/core'
3
+ require 'time'
3
4
 
4
5
  class ::Time
5
6
  def as_ms
6
7
  to_i * 1000 + usec / 1000
7
8
  end
8
9
 
9
- def to_json(*_a)
10
+ def to_json(*_args)
10
11
  # Use the precision provided in our receiver, but only up to milliseconds at max. Objects lacking the fraction part
11
12
  # altogether will be serialized without fraction part using this algorithm.
12
13
  fraction_digits = [nsec.to_s.sub(/0+$/, '').length, 3].min
@@ -1,5 +1,5 @@
1
1
  module Ecraft
2
2
  module Extensions
3
- VERSION = '0.3.1'.freeze
3
+ VERSION = '0.4.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecraft-extensions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tre Kronor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-31 00:00:00.000000000 Z
11
+ date: 2018-07-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.47'
117
+ version: '0.51'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.47'
124
+ version: '0.51'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: simplecov
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -168,9 +168,10 @@ files:
168
168
  - LICENSE
169
169
  - README.md
170
170
  - Rakefile
171
+ - bin/console
172
+ - bin/setup
171
173
  - ecraft-extensions.gemspec
172
174
  - lib/ecraft/extensions.rb
173
- - lib/ecraft/extensions/all.rb
174
175
  - lib/ecraft/extensions/bigdecimal.rb
175
176
  - lib/ecraft/extensions/date.rb
176
177
  - lib/ecraft/extensions/datetime.rb
@@ -200,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
201
  version: '0'
201
202
  requirements: []
202
203
  rubyforge_project:
203
- rubygems_version: 2.6.14
204
+ rubygems_version: 2.7.6
204
205
  signing_key:
205
206
  specification_version: 4
206
207
  summary: eCraft Extensions
@@ -1,7 +0,0 @@
1
- # Requiring this file will activate _all_ the "core extensions" defined in ecraft-extensions. This may or may not be what you want.
2
- # It is usually a better, safer approach to selectively require only the parts you know that you need, since core extensions _can_
3
- # potentially cause conflicts with other libraries extending core classes (such as ActiveSupport).
4
- require 'ecraft/extensions/bigdecimal'
5
- require 'ecraft/extensions/date'
6
- require 'ecraft/extensions/datetime'
7
- require 'ecraft/extensions/ostruct'