speculate_about 0.1.0 → 0.1.1

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
  SHA256:
3
- metadata.gz: 79f9d62e9eca9435df9fc7c9c5851be34190128cb5bf839035ae54623aabd623
4
- data.tar.gz: 0ec1ab318bbb646c8fae2fbd40d1c5a0b4b809104559f75499d2edc274dc6862
3
+ metadata.gz: 01f8a6b1bd4d875d642678f3587c58494d61280f9064debbac19b5b60c3da4ee
4
+ data.tar.gz: 409f1b1d636138e95180144267eab84a81eee537734e0bc417ee4e0e7af579f0
5
5
  SHA512:
6
- metadata.gz: f88a8f63272fb0dfe276a00b454d527178ec798378270d62d5ea2d266e01bae8e1260a2edb261444eb0ab3c4582651b3c6f66c7abb0f333d93d0abc50979239e
7
- data.tar.gz: ca9364804df625b912058277c01f2b20d526de1a2264c27b7f8d0ceba025074288425d3ed8ce0f9f22c4d31088aa1339daf6bc73f166342b4f18e6a8036bbe45
6
+ metadata.gz: ea0a3e7ec17457a6de3bbefe6cc01c4a99be7626ad87ff3c766a04e62795f0648048e5fea50a6d85f31be9b321a73b7296ffa1ff65bfb4dbb38a4670216d13ad
7
+ data.tar.gz: 455a502c19ca76b5aa5ebf5ddabec69d435f4af28a00b3f96bc048c98b50b44d6b72646e2e2f39ca62f2d486b6b9b2b57880eed493d43cc43338a7ec19930469
@@ -4,7 +4,7 @@ require 'speculations/parser'
4
4
 
5
5
  module SpeculateAbout
6
6
  def speculate_about file
7
- path = _find_file(file)
7
+ path = _find_file(file, File.dirname( caller.first ))
8
8
  code = _compile path
9
9
  ENV["SPECULATE_ABOUT_DEBUG"] ? puts(code) : instance_eval(code)
10
10
  end
@@ -16,11 +16,11 @@ module SpeculateAbout
16
16
  ast = Speculations::Parser.new.parse_from_file(path)
17
17
  ast.to_code
18
18
  end
19
- def _find_file file
19
+ def _find_file file, local_path
20
20
  return file if File.readable? file
21
- path = File.join(File.dirname(location), file)
22
- return path if File.readable? path
23
- raise ArgumentError, "file #{file} neither found in your project dir, neither your spec dir"
21
+ local_file = File.join(local_path, file)
22
+ return local_file if File.readable? local_file
23
+ raise ArgumentError, "file #{file.inspect} not found"
24
24
  end
25
25
  end
26
26
 
@@ -11,8 +11,8 @@ class Speculations::Parser::Context
11
11
  children.last
12
12
  end
13
13
 
14
- def add_example(lnb:)
15
- examples << Example.new(lnb: lnb, parent: self)
14
+ def add_example(lnb:, line:)
15
+ examples << Example.new(lnb: lnb, parent: self, line: line)
16
16
  examples.last
17
17
  end
18
18
 
@@ -2,6 +2,8 @@ class Speculations::Parser::Context::Example
2
2
 
3
3
  attr_reader :lnb, :name, :parent
4
4
 
5
+ NAMED_EXAMPLE = %r{\A[`~]{3,}ruby\s+:example\s+(.*)}
6
+
5
7
  def add_line line
6
8
  lines << line
7
9
  self
@@ -22,10 +24,20 @@ class Speculations::Parser::Context::Example
22
24
 
23
25
  private
24
26
 
25
- def initialize(lnb:, parent:)
27
+ def initialize(lnb:, line:, parent:)
26
28
  @lnb = lnb
27
- @name = "Example from #{parent.filename}:#{lnb.succ}"
28
29
  @parent = parent
30
+ @name = _compute_name(lnb: lnb, line: line, parent: parent)
31
+ end
32
+
33
+ def _compute_name(lnb:, parent:, line:)
34
+ _, name = NAMED_EXAMPLE.match(line).to_a
35
+
36
+ if name&.empty? == false # SIC
37
+ "#{name} (#{File.basename(parent.filename)}:#{lnb.succ})"
38
+ else
39
+ "Example from #{parent.filename}:#{lnb.succ}"
40
+ end
29
41
  end
30
42
 
31
43
  def _example_head
@@ -13,7 +13,7 @@ module Speculations
13
13
  node = node.set_setup(lnb: lnb)
14
14
  [:bef, node]
15
15
  when State.example_match(line)
16
- node = node.add_example(lnb: lnb)
16
+ node = node.add_example(lnb: lnb, line: line)
17
17
  [:exa, node]
18
18
  when State.include_match(line)
19
19
  node = node.add_include(lnb: lnb)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: speculate_about
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-02-01 00:00:00.000000000 Z
11
+ date: 2020-02-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec