ryo.rb 0.5.1 → 0.5.3

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: 4d4a31df7a8e4862600d2e3072df9320d95cdd805fdef5028cd1c6154a9786c2
4
- data.tar.gz: 862aa59d0f09c4ebcabb9c5552f390dc8456a5964601c48d866a84a01e871443
3
+ metadata.gz: 2b39f30dc20ead80a6704d27f1a10b9046ad6fe05d164ec4cb31b6606f225a33
4
+ data.tar.gz: 03db26bce85e7f1fad10d2b909284c32fc18f13cd999aa718ddd21d867d29a29
5
5
  SHA512:
6
- metadata.gz: 57bab86f4003fb0aa40c43fa2fc41d335b26ead6c99522d97227f25279b5f45330c7fc9edf66b4682508d4cf13593be6d1ce55ab8507263cad75fa99605651c0
7
- data.tar.gz: 384411a195dbd7699dfa9f8b3a253588e477b28b04210c3a8452285f47778d149f090750b352de9bf9e95f19fb679127062b2fcce90aac5d0bc99224f452cf3c
6
+ metadata.gz: 95f73de92d97038eb2ef3c70c4fb97e02c84a0ed5fe9a7d73f198f392f4a04ca608170ab2011f537bac9779cb66c7214a1166040268d602aa592a540789e24e8
7
+ data.tar.gz: 51809089becfa72d4cadf79771cd944f1d31e8d658d03f4d00881c6d7eec6dbd58448cbabe3efada8e386a55c96b5298fb47470f76c125179ecf35ad9d1ddb1b
data/Gemfile CHANGED
@@ -1,5 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source "https://rubygems.org"
4
- gem "test-cmd.rb", github: "0x1eef/test-cmd.rb", tag: "v0.4.0"
5
4
  gemspec
data/README.md CHANGED
@@ -333,11 +333,14 @@ p point.x # => 5
333
333
  p point.y # => 10
334
334
  ```
335
335
 
336
- ## <a id='install'>Install</a>
336
+ ## Documentation
337
337
 
338
- **Rubygems.org**
338
+ A complete API reference is available at
339
+ [0x1eef.github.io/x/ryo.rb](https://0x1eef.github.io/x/ryo.rb)
339
340
 
340
- Ryo can be installed via rubygems.org.
341
+ ## Install
342
+
343
+ Ryo can be installed via rubygems.org:
341
344
 
342
345
  gem install ryo.rb
343
346
 
@@ -350,11 +353,10 @@ Ryo can be installed via rubygems.org.
350
353
 
351
354
  Thanks to
352
355
  [@awfulcooking (mooff)](https://github.com/awfulcooking)
353
- for the helpful discussions and advice.
356
+ for the helpful discussions, ideas, and advice
354
357
 
355
358
  ## License
356
359
 
357
- [BSD Zero Clause](https://choosealicense.com/licenses/0bsd/).
360
+ [BSD Zero Clause](https://choosealicense.com/licenses/0bsd/)
358
361
  <br>
359
- See [LICENSE](./LICENSE).
360
-
362
+ See [LICENSE](./LICENSE)
data/lib/ryo/builder.rb CHANGED
@@ -26,7 +26,7 @@ module Ryo::Builder
26
26
  # returned in its place.
27
27
  def self.build(buildee, props, prototype = nil)
28
28
  if Ryo.ryo?(props)
29
- build(builedee, Ryo.table_of(props), prototype || Ryo.prototype_of(props))
29
+ build(buildee, Ryo.table_of(props), prototype || Ryo.prototype_of(props))
30
30
  else
31
31
  ryo = buildee.new
32
32
  Ryo.set_prototype_of(ryo, prototype)
data/lib/ryo/json.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  ##
2
4
  # The {Ryo::JSON Ryo::JSON} module provides a number of methods
3
5
  # for coercing JSON data into a Ryo object. It must be required
@@ -8,33 +10,35 @@ module Ryo::JSON
8
10
  extend self
9
11
 
10
12
  ##
13
+ # @example
14
+ # Ryo.from_json(path: "/foo/bar/baz.json")
15
+ # Ryo.from_json(string: "[]")
16
+ #
11
17
  # @param [String] path
12
- # The path to a JSON file.
18
+ # The path to a JSON file
19
+ #
20
+ # @param [String] string
21
+ # A blob of JSON
13
22
  #
14
23
  # @param [Ryo] object
15
- # {Ryo::Object Ryo::Object}, or {Ryo::BasicObject Ryo::BasicObject}.
16
- # Defaults to {Ryo::Object Ryo::Object}.
24
+ # {Ryo::Object Ryo::Object}, or {Ryo::BasicObject Ryo::BasicObject}
25
+ # Defaults to {Ryo::Object Ryo::Object}
17
26
  #
18
27
  # @raise [SystemCallError]
19
- # Might raise a number of Errno exceptions.
28
+ # Might raise a number of Errno exceptions
20
29
  #
21
30
  # @return [Ryo::Object, Ryo::BasicObject]
22
- # Returns a Ryo object.
23
- def from_json_file(path, object: Ryo::Object)
24
- from_json File.binread(path), object:
25
- end
26
-
27
- ##
28
- # @param [String] blob
29
- # A blob of JSON.
30
- #
31
- # @param [Ryo] object
32
- # {Ryo::Object Ryo::Object}, or {Ryo::BasicObject Ryo::BasicObject}.
33
- # Defaults to {Ryo::Object Ryo::Object}.
34
- #
35
- # @return (see Ryo::JSON#from_json_file)
36
- def from_json(blob, object: Ryo::Object)
37
- object.from JSON.parse(blob)
31
+ # Returns a Ryo object
32
+ def from_json(path: nil, string: nil, object: Ryo::Object)
33
+ if path && string
34
+ raise ArgumentError, "Provide a path or string but not both"
35
+ elsif path
36
+ object.from JSON.parse(File.binread(path))
37
+ elsif string
38
+ object.from JSON.parse(string)
39
+ else
40
+ raise ArgumentError, "No path or string provided"
41
+ end
38
42
  end
39
43
 
40
44
  Ryo.extend(self)
data/lib/ryo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ryo
4
- VERSION = "0.5.1"
4
+ VERSION = "0.5.3"
5
5
  end
data/ryo.rb.gemspec CHANGED
@@ -10,12 +10,12 @@ Gem::Specification.new do |gem|
10
10
  gem.licenses = ["MIT"]
11
11
  gem.files = `git ls-files`.split($/)
12
12
  gem.require_paths = ["lib"]
13
- gem.description = "Ryo implements prototype-based inheritance, in Ruby."
13
+ gem.description = "Ryo implements prototype-based inheritance, in Ruby"
14
14
  gem.summary = gem.description
15
15
  gem.add_development_dependency "yard", "~> 0.9"
16
16
  gem.add_development_dependency "redcarpet", "~> 3.5"
17
17
  gem.add_development_dependency "rspec", "~> 3.10"
18
18
  gem.add_development_dependency "rubocop-rspec", "~> 2.12"
19
19
  gem.add_development_dependency "standard", "~> 1.9"
20
- gem.add_development_dependency "test-cmd.rb", "~> 0.4"
20
+ gem.add_development_dependency "test-cmd.rb", "~> 0.12"
21
21
  end
data/spec/readme_spec.rb CHANGED
@@ -5,7 +5,7 @@ require "test-cmd"
5
5
 
6
6
  RSpec.describe "README.md examples" do
7
7
  run_example = ->(file) do
8
- Test::Cmd.cmd("ruby share/ryo.rb/examples/#{file}")
8
+ cmd("ruby", "share/ryo.rb/examples/#{file}")
9
9
  end
10
10
 
11
11
  subject do
@@ -6,7 +6,7 @@ require "fileutils"
6
6
 
7
7
  RSpec.describe Ryo::JSON do
8
8
  describe ".from_json_file" do
9
- subject(:ryo) { described_class.from_json_file(path, object:) }
9
+ subject(:ryo) { described_class.from_json(path:, object:) }
10
10
  before { File.binwrite path, JSON.dump(x: 20, y: 40) }
11
11
  after { FileUtils.rm(path) }
12
12
  let(:path) { File.join(__dir__, "test.json") }
@@ -5,6 +5,15 @@ require_relative "setup"
5
5
  RSpec.describe "Ryo objects" do
6
6
  let(:car) { Ryo(name: "Car") }
7
7
 
8
+ describe "Kernel#Ryo" do
9
+ context "when given a Ryo object" do
10
+ subject { Ryo(ryo) }
11
+ let(:ryo) { Ryo(name: "Car") }
12
+
13
+ it { is_expected.to be_instance_of(Ryo::Object) }
14
+ end
15
+ end
16
+
8
17
  describe "#respond_to?" do
9
18
  context "when a property is defined" do
10
19
  subject { car.respond_to?(:name) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ryo.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - '0x1eef'
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-16 00:00:00.000000000 Z
11
+ date: 2024-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -86,15 +86,15 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.4'
89
+ version: '0.12'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0.4'
97
- description: Ryo implements prototype-based inheritance, in Ruby.
96
+ version: '0.12'
97
+ description: Ryo implements prototype-based inheritance, in Ruby
98
98
  email:
99
99
  - 0x1eef@protonmail.com
100
100
  executables: []
@@ -166,8 +166,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  - !ruby/object:Gem::Version
167
167
  version: '0'
168
168
  requirements: []
169
- rubygems_version: 3.5.3
169
+ rubygems_version: 3.5.9
170
170
  signing_key:
171
171
  specification_version: 4
172
- summary: Ryo implements prototype-based inheritance, in Ruby.
172
+ summary: Ryo implements prototype-based inheritance, in Ruby
173
173
  test_files: []