self_data 0.1.0 → 1.2.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
- SHA1:
3
- metadata.gz: d17cc66d335be216b1e7f8360814296be20b5dcd
4
- data.tar.gz: 2df2b6448361d9f4ad7ef83d79f11e608fa1388f
2
+ SHA256:
3
+ metadata.gz: ace750c9fee999c5fee53ce98fa9e958f8cfa405234fc76433d0c12225167076
4
+ data.tar.gz: 1f37f78e87718c9ef7ce72c477803033e5a4d2c0d0eace08a89c416bdbfc1aed
5
5
  SHA512:
6
- metadata.gz: 4947330d01da42f4abc83365f79fd585bdf28b1b0f01eaf1f6b7c736da2d95f92f7f1998052ac53d3741c4f5e3f9befd7d558c153bcc66bac1bb76ad56c83bb7
7
- data.tar.gz: 891834266d340f052a44c483f97ffcab6aa64126b206f7f806e223d584f59f7ad63c860ae1be6908e1bc0f9f676f389fd26e45a2854cd8a136a0c4b9fca0b6a9
6
+ metadata.gz: 5c49d4345d6861651dc72f9a3389335baee5abebac90364830c68b05f5435ea81860873808e4d21055b929a4d0b9a3f441035ba76d94261640256054eb35935f
7
+ data.tar.gz: eaa40576e8998947d0799852c6adf5b474f702a3e1a77a05d466e7ec6de49efd7bbae83b646ef60158f1799e8cefc9085bd16b50bf5487c36e020b26ddf1d140
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --color
2
+ --format=progress
2
3
  --require spec_helper
@@ -1,16 +1,6 @@
1
- Metrics/LineLength:
2
- Max: 100
3
- Exclude:
4
- - 'self_data.gemspec'
1
+ inherit_gem:
2
+ rubocop-config-umbrellio: lib/rubocop.yml
5
3
 
6
- Style/Documentation:
7
- Enabled: false
8
-
9
- Style/StringLiterals:
10
- Enabled: false
11
-
12
- Style/MultilineOperationIndentation:
13
- EnforcedStyle: indented
14
-
15
- Style/AndOr:
16
- EnforcedStyle: conditionals
4
+ AllCops:
5
+ DisplayCopNames: true
6
+ TargetRubyVersion: 2.5
@@ -1,4 +1,15 @@
1
1
  language: ruby
2
- rvm:
3
- - 2.2.3
4
- before_install: gem install bundler -v 1.10.6
2
+ sudo: false
3
+ before_install: gem install bundler
4
+ script:
5
+ - bundle exec rubocop
6
+ - bundle exec rspec
7
+ matrix:
8
+ fast_finish: true
9
+ include:
10
+ - rvm: 2.3.7
11
+ - rvm: 2.4.4
12
+ - rvm: 2.5.1
13
+ - rvm: ruby-head
14
+ allow_failures:
15
+ - rvm: ruby-head
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in self_data.gemspec
4
6
  gemspec
@@ -1,4 +1,4 @@
1
- Copyright (c) 2015 7dr1v3
1
+ Copyright (c) 2017 Umbrellio
2
2
 
3
3
 
4
4
 
data/README.md CHANGED
@@ -1 +1,86 @@
1
- # SelfData
1
+ # SelfData · [![Gem Version](https://badge.fury.io/rb/self_data.svg)](https://badge.fury.io/rb/self_data) [![Build Status](https://travis-ci.org/umbrellio/self_data.svg?branch=master)](https://travis-ci.org/umbrellio/self_data) [![Coverage Status](https://coveralls.io/repos/github/umbrellio/self_data/badge.svg)](https://coveralls.io/github/umbrellio/self_data)
2
+
3
+ It's like native ruby `DATA` but you can use it not only for main file.
4
+
5
+ ## Installation
6
+
7
+ ```ruby
8
+ # Gemfile
9
+ gem 'self_data'
10
+ ```
11
+
12
+ ```shell
13
+ $ bundle install
14
+ -- or --
15
+ $ gem install self_data
16
+ ```
17
+
18
+ ```ruby
19
+ require 'self_data'
20
+ ```
21
+
22
+ ## Synopsis
23
+
24
+ ```ruby
25
+ # main.rb
26
+
27
+ require 'self_data'
28
+ require './a.rb'
29
+
30
+ puts "DATA: #{A.native_data}"
31
+ puts "SelfData: #{A.self_data}"
32
+
33
+ __END__
34
+ main.rb data
35
+ ```
36
+
37
+ ```ruby
38
+ # a.rb
39
+
40
+ module A
41
+ module_function
42
+
43
+ def native_data
44
+ DATA.read
45
+ end
46
+
47
+ def self_data
48
+ SelfData.read
49
+ end
50
+ end
51
+
52
+ __END__
53
+ a.rb data
54
+ ```
55
+
56
+ and if you execute it, you'll get:
57
+
58
+ ```shell
59
+ $ ruby main.rb
60
+ DATA: main.rb data
61
+ SelfData: a.rb data
62
+ ```
63
+
64
+ ## Usage and Notes
65
+
66
+ Use `SelfData.read()` to get text or use `SelfData.load(*formats, **options)` to get formatted data (like yaml, xml, erb, etc).
67
+
68
+ Look at the [lib/self_data/config.rb](https://github.com/umbrellio/self_data/blob/master/lib/self_data/config.rb) for more details.
69
+
70
+ SelfData uses `caller`, it's not fast, that's why you shouldn't use SelfData in loops.
71
+
72
+ ## Contributing
73
+
74
+ Bug reports and pull requests are welcome on GitHub at https://github.com/umbrellio/self_data.
75
+
76
+ ## License
77
+
78
+ Released under MIT License.
79
+
80
+ ## Authors
81
+
82
+ Created by [7dr1v3](https://github.com/7dr1v3)
83
+
84
+ <a href="https://github.com/umbrellio/">
85
+ <img style="float: left;" src="https://umbrellio.github.io/Umbrellio/supported_by_umbrellio.svg" alt="Supported by Umbrellio" width="439" height="72">
86
+ </a>
data/Rakefile CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
@@ -2,13 +2,5 @@
2
2
 
3
3
  require "bundler/setup"
4
4
  require "self_data"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
5
+ require "pry"
6
+ Pry.start
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'rspec' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rspec-core", "rspec")
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rubocop", "rubocop")
@@ -1,20 +1,31 @@
1
- require "yaml"
2
- require "active_support/core_ext/module/delegation.rb"
3
- require "active_support/core_ext/class/attribute.rb"
1
+ # frozen_string_literal: true
4
2
 
5
3
  class SelfData
6
- class_attribute :default_formats, :default_options, :filters, :converters
7
-
8
4
  class << self
9
- delegate :read, :load, to: :new
5
+ attr_accessor :default_formats, :default_options
6
+
7
+ def read(*args, **kargs)
8
+ new.read(*args, **kargs)
9
+ end
10
+
11
+ def load(*args, **kargs)
12
+ new.load(*args, **kargs)
13
+ end
14
+
15
+ def filters
16
+ @filters ||= []
17
+ end
10
18
 
11
19
  def add_filter(&block)
12
20
  filters << block
13
21
  end
14
22
 
23
+ def converters
24
+ @converters ||= {}
25
+ end
26
+
15
27
  def add_converter(name, block)
16
- self.converters ||= {}
17
- self.converters[name] = block
28
+ converters[name] = block
18
29
  end
19
30
  end
20
31
 
@@ -25,32 +36,32 @@ class SelfData
25
36
  end
26
37
 
27
38
  def load(*formats, **options)
28
- formats = default_formats if formats.empty?
29
- options = default_options if options.empty?
39
+ formats = self.class.default_formats if formats.empty?
40
+ options = self.class.default_options if options.empty?
30
41
 
31
42
  formats.reduce(read) do |data, format|
32
- fail ConverterNotFound, format unless converters[format]
43
+ raise ConverterNotFound, format unless self.class.converters[format]
33
44
  begin
34
- converters[format].call(data, options)
35
- rescue => e
36
- raise ConversionError, format, e
45
+ self.class.converters[format].call(data, options)
46
+ rescue => error
47
+ raise ConversionError.new(format, error)
37
48
  end
38
49
  end
39
50
  end
40
51
 
41
52
  def read
42
- IO.read(file).scan(/\n__END__\n(.*)/m).flatten.first or fail NoDataFound, file
53
+ IO.read(file).scan(/\n__END__\n(.*)/m).flatten.first or raise NoDataFound, file
43
54
  end
44
55
 
45
56
  private
46
57
 
47
58
  def caller_file
48
59
  calls = caller.lazy
49
- .map { |call_string| call_string.split(':').first }
50
- .select { |file| file != __FILE__ }
60
+ .map { |call_string| call_string.split(":").first }
61
+ .reject { |file| file == __FILE__ }
51
62
  .select(&File.method(:exist?))
52
63
 
53
- filters.each do |filter|
64
+ self.class.filters.each do |filter|
54
65
  calls = calls.select(&filter.method(:call))
55
66
  end
56
67
 
@@ -1,6 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "erb"
4
+ require "yaml"
5
+ require "json"
6
+
1
7
  SelfData.default_formats = [:erb, :yaml]
2
8
  SelfData.default_options = {}
3
- SelfData.filters = []
4
9
 
5
- SelfData.add_converter :erb, ->(data, options) { ERB.new(data).result(options[:context]) }
6
- SelfData.add_converter :yaml, ->(data, _options) { YAML.load(data) }
10
+ SelfData.add_converter :erb, -> (data, options) { ERB.new(data).result(options[:context]) }
11
+ SelfData.add_converter :yaml, -> (data, _options) { YAML.load(data) }
12
+ SelfData.add_converter :json, -> (data, _options) { JSON.parse(data) }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class SelfData
2
4
  Error = Class.new(StandardError)
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class SelfData
2
- VERSION = "0.1.0"
4
+ VERSION = "1.2.1"
3
5
  end
@@ -1,29 +1,32 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'self_data/version'
5
+ require "self_data/version"
6
+
7
+ files_regexp = %r{^(test|spec|features)/}
5
8
 
6
9
  Gem::Specification.new do |spec|
7
10
  spec.name = "self_data"
8
11
  spec.version = SelfData::VERSION
9
- spec.authors = ["TDrive"]
10
- spec.email = ["tdrive@xc0de.ru"]
12
+ spec.authors = ["Umbrellio"]
13
+ spec.email = ["info@umbrellio.biz"]
11
14
 
12
- spec.summary = ""
15
+ spec.summary = "It's like DATA but better"
13
16
  spec.description = "It's like DATA but better"
14
- spec.homepage = "https://github.com/7dr1v3/self_data"
15
- spec.license = 'MIT'
17
+ spec.homepage = "https://github.com/umbrellio/self_data"
18
+ spec.license = "MIT"
16
19
 
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(files_regexp) }
18
21
  spec.bindir = "exe"
19
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
23
  spec.require_paths = ["lib"]
21
24
 
22
- spec.add_runtime_dependency "activesupport", ">= 3.0"
23
-
24
- spec.add_development_dependency "bundler", "~> 1.10"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec", "~> 3.4"
27
- spec.add_development_dependency "rubocop", "~> 0.35"
25
+ spec.add_development_dependency "bundler"
26
+ spec.add_development_dependency "coveralls"
28
27
  spec.add_development_dependency "pry"
28
+ spec.add_development_dependency "rake"
29
+ spec.add_development_dependency "rspec"
30
+ spec.add_development_dependency "rubocop-config-umbrellio"
31
+ spec.add_development_dependency "simplecov"
29
32
  end
metadata CHANGED
@@ -1,87 +1,101 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: self_data
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
- - TDrive
7
+ - Umbrellio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-07 00:00:00.000000000 Z
11
+ date: 2020-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activesupport
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
20
- type: :runtime
19
+ version: '0'
20
+ type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.0'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: coveralls
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '1.10'
47
+ version: '0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '1.10'
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '10.0'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '10.0'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '3.4'
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '3.4'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: rubocop
84
+ name: rubocop-config-umbrellio
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '0.35'
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '0.35'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: pry
98
+ name: simplecov
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - ">="
@@ -96,7 +110,7 @@ dependencies:
96
110
  version: '0'
97
111
  description: It's like DATA but better
98
112
  email:
99
- - tdrive@xc0de.ru
113
+ - info@umbrellio.biz
100
114
  executables: []
101
115
  extensions: []
102
116
  extra_rdoc_files: []
@@ -110,13 +124,15 @@ files:
110
124
  - README.md
111
125
  - Rakefile
112
126
  - bin/console
127
+ - bin/rspec
128
+ - bin/rubocop
113
129
  - bin/setup
114
130
  - lib/self_data.rb
115
131
  - lib/self_data/config.rb
116
132
  - lib/self_data/errors.rb
117
133
  - lib/self_data/version.rb
118
134
  - self_data.gemspec
119
- homepage: https://github.com/7dr1v3/self_data
135
+ homepage: https://github.com/umbrellio/self_data
120
136
  licenses:
121
137
  - MIT
122
138
  metadata: {}
@@ -135,9 +151,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
151
  - !ruby/object:Gem::Version
136
152
  version: '0'
137
153
  requirements: []
138
- rubyforge_project:
139
- rubygems_version: 2.4.5.1
154
+ rubygems_version: 3.1.2
140
155
  signing_key:
141
156
  specification_version: 4
142
- summary: ''
157
+ summary: It's like DATA but better
143
158
  test_files: []