uberscore 0.0.4 → 0.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e87c8925becbd2d8fbd82c8355f34d4b008a2018
4
- data.tar.gz: 5fd7141d4ac43a8ef8de01a57ee1fb5451fa503d
3
+ metadata.gz: 894935b0dfd33503f11260092e7fee095f982411
4
+ data.tar.gz: acf71c91e87c65f63a8a021bca156b8a17ec2310
5
5
  SHA512:
6
- metadata.gz: 1b1d523d24700b279373b891389c9f44e010a0f5712cd708c37dedc5d37677b0596d0a3ca68e5082f9ed01f26e3070e6397866cdcbeaed73f822991d199727c5
7
- data.tar.gz: aaf24409c991587f2011365a62365503e9d11a26690bc2abb2c220b4ea7ca11b4dcfbac2dfe63316b5e2b1ec3f6453e9cbf6fa97e5f45d26e4eb5a4510f4006d
6
+ metadata.gz: 7f107dfbf6866dd8cdf836c7b8e945ee922d338008b4e0b0b4d84fa1253433cd66400587af0a6f011c51941b3c1e234d587e3d37119e2e67873fe6bec5a3a228
7
+ data.tar.gz: 7e82391b4153664708809f488fd86fff909eeb1390ec8683ad2db9714e2686ccdbed6dc1c327f5141758bb5705bc70bc9dfd98021075657f361d4762024c69f5
data/README.md CHANGED
@@ -18,12 +18,22 @@ Born to make your Ruby blocks more concise.
18
18
  # Subscript.
19
19
  [{ name: "foo" }, { name: "bar" }].map { |hash| hash[:name] }
20
20
  [{ name: "foo" }, { name: "bar" }].map(&_[:name])
21
+ ```
22
+
23
+ # Name Conflict
24
+ The method name `_` conflicts with the last expression shortcut in Pry and IRB.
25
+ If you wish to name the method differently, define the constant `UBERSCORE_METHOD_NAME`
26
+ before requiring the gem.
27
+
28
+ ```ruby
29
+ UBERSCORE_METHOD_NAME = :it # or any other name.
30
+
31
+ require "uberscore"
21
32
 
22
- # Use multiple arguments.
23
- [[1, 2], [3, 4]].map(&_ + _)
24
- [[1, 2], [3, 4]].map { |a, b| a + b }
33
+ [{ name: "foo" }, { name: "bar" }].map(&it[:name])
25
34
  ```
26
35
 
36
+
27
37
  ## Installation
28
38
 
29
39
  Add this line to your application's Gemfile:
@@ -1,5 +1,7 @@
1
1
  require "uberscore/version"
2
2
 
3
+ UBERSCORE_METHOD_NAME = :_ unless defined? UBERSCORE_METHOD_NAME
4
+
3
5
  module Uberscore
4
6
  class Context < BasicObject
5
7
  class << self
@@ -23,17 +25,12 @@ module Uberscore
23
25
 
24
26
  def to_proc
25
27
  ->(object) do
26
- @call_chain.reduce(object) do |current, (method_name, args, block)|
27
- if Context === args.first
28
- args = [args.first.to_proc.(current.size > 2 ? current.drop(1) : current[1]), *args.drop(2)]
29
- current = current[0]
30
- end
31
-
32
- current.public_send(method_name, *args, &block)
28
+ @call_chain.reduce(object) do |block_parameter, (method_name, method_arguments, block)|
29
+ block_parameter.public_send(method_name, *method_arguments, &block)
33
30
  end
34
31
  end
35
32
  end
36
33
  end
37
34
 
38
- Kernel.send(:define_method, :_) { Context.__new_uberscore_context__ }
35
+ Kernel.send(:define_method, UBERSCORE_METHOD_NAME) { Context.__new_uberscore_context__ }
39
36
  end
@@ -1,3 +1,3 @@
1
1
  module Uberscore
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -2,6 +2,10 @@ require_relative "../lib/uberscore"
2
2
  require "pry"
3
3
 
4
4
  describe Uberscore do
5
+ it "works" do
6
+ expect(%w[A B C].map(&_.downcase)).to eq(%w[a b c])
7
+ end
8
+
5
9
  it "chains method calls" do
6
10
  expect(%w[0x 0d ea].map(&_.hex.divmod(13)[1] == 0)).to eq(%w[0x 0d ea].map { |element| element.hex.divmod(13)[1] == 0 })
7
11
  end
@@ -17,10 +21,4 @@ describe Uberscore do
17
21
  it "can subscript" do
18
22
  expect([{ name: "foo" }, { name: "bar" }].map(&_[:name])).to eq([{ name: "foo" }, { name: "bar" }].map { |hash| hash[:name] })
19
23
  end
20
-
21
- it "can use multiple parameters" do
22
- expect([[1, 2], [3, 4]].map(&_ + _)).to eq([3, 7])
23
- expect([[1, 2], [3, 4]].map(&_ + _ * 10)).to eq([21, 43])
24
- expect([[1, 2, "100"], [3, 4, "200"]].map(&_ + _ * _.to_i)).to eq([201, 803])
25
- end
26
24
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uberscore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ox0dea
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-27 00:00:00.000000000 Z
12
+ date: 2015-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler