tcepsni 0.3.0 → 0.3.1

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
2
  SHA256:
3
- metadata.gz: 3c7e2dad3ee934784b32e2263cfd23a6a478ec4d648b7e02f1a02267238296e5
4
- data.tar.gz: 5db7c50e53eea93481004efd7d2f359db19fe8099356bfd980564f3b861d52d1
3
+ metadata.gz: 40d96c10a7e7729b0c37648bedd7b693dff04602d9bc3ef9794e695d48986864
4
+ data.tar.gz: f6316e6ceba71e2a7cee7d99140357a08e52c598e31324016159d301ffb791e5
5
5
  SHA512:
6
- metadata.gz: fc943477c66e694f76a6711ec01a2f82893c756fe7e30b1f00e8ef82d04c63699899b28252e2d046d148af68195a049bf2ca79b8b90bde359474ac610d9d3804
7
- data.tar.gz: 8daf45aa53eb860b306357831c0c86a17d0e847fba6cfa8a051fe932a6d355ccfee936aee3ef48949b05a418013b7e140ce37ff57108ae653f768c97359c2f94
6
+ metadata.gz: e3235426ddaeed30dd132dfc2f904259abe5da867aa4e17aa683d43d42112d8ded52575e4cb3e218c39fcc0f4f1a84175594279f5e07e221da08a5d03afe79f7
7
+ data.tar.gz: 3e79b0c3e3f29d5044cdc7051e980db49d1a49fd54a7fa8299386056f38864887fe04238319177d5fa9f0bbe4bd07c773a9c4fe279b2875b80fdf7e9f5bcbac8
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.3.1 - 2024-07-21
6
+
7
+ Update gemspec fields etc.
8
+ There should be no API changes.
9
+
5
10
  ## 0.3.0 - 2023-11-18
6
11
 
7
12
  ### Changed
data/README.md CHANGED
@@ -15,7 +15,7 @@ Tcepsni has a parsing method `Tcepsni.parse(str)`, which returns a parsed Ruby o
15
15
  ## Development
16
16
 
17
17
  After checking out the repo, run `bin/setup` to install dependencies.
18
- Then, run `rake test-unit` to run the tests.
18
+ Then, run `rake test` to run the tests.
19
19
  You can also run `bin/console` for an interactive prompt that will allow you to experiment.
20
20
 
21
21
  To install this gem onto your local machine, run `bundle exec rake install`.
@@ -27,7 +27,7 @@ Bug reports and pull requests are welcome.
27
27
 
28
28
  ## License
29
29
 
30
- Copyright 2023 gemmaro.
30
+ Copyright 2023, 2024 gemmaro.
31
31
 
32
32
  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
33
33
  You may obtain a copy of the License at [Apache Software Foundation - Apache License, Version 2.0][asl].
@@ -27,31 +27,27 @@ module Tcepsni
27
27
  elsif @scanner.skip('#<')
28
28
  pos = @scanner.pos
29
29
  @vendors.select { |vendor| vendor.object? }.each do |vendor|
30
- begin
31
- @scanner.pos = pos
32
- return vendor.parse(self)
33
- rescue Error
34
- next
35
- end
30
+ @scanner.pos = pos
31
+ return vendor.parse(self)
32
+ rescue Error
33
+ next
36
34
  end
37
35
  @scanner.pos = pos
38
36
  parse_object
39
- else
40
- if (digits = @scanner.scan(/\d+/))
41
- int = Integer(digits)
42
- if @scanner.skip('.')
43
- int2 = parse_integer
44
- Float("#{int}.#{int2}")
45
- elsif digits.size == 4 && @scanner.skip(/-(?<month>[01]\d)-(?<day>\d\d) (?<hour>[012]\d):(?<minute>[0-5]\d):(?<second>[0-5]\d) (?<zone>[+-]\d\d\d\d)/)
46
- Time.new(Integer(int), @scanner[:month], @scanner[:day],
47
- @scanner[:hour], @scanner[:minute], @scanner[:second],
48
- @scanner[:zone])
49
- else
50
- int
51
- end
37
+ elsif (digits = @scanner.scan(/\d+/))
38
+ int = Integer(digits)
39
+ if @scanner.skip('.')
40
+ int2 = parse_integer
41
+ Float("#{int}.#{int2}")
42
+ elsif digits.size == 4 && @scanner.skip(/-(?<month>[01]\d)-(?<day>\d\d) (?<hour>[012]\d):(?<minute>[0-5]\d):(?<second>[0-5]\d) (?<zone>[+-]\d\d\d\d)/)
43
+ Time.new(Integer(int), @scanner[:month], @scanner[:day],
44
+ @scanner[:hour], @scanner[:minute], @scanner[:second],
45
+ @scanner[:zone])
52
46
  else
53
- parse_class
47
+ int
54
48
  end
49
+ else
50
+ parse_class
55
51
  end
56
52
  end
57
53
 
@@ -84,7 +80,11 @@ module Tcepsni
84
80
  def parse_array
85
81
  result = []
86
82
  until @scanner.eos?
87
- result << parse_expression rescue break
83
+ begin
84
+ result << parse_expression
85
+ rescue StandardError
86
+ break
87
+ end
88
88
  @scanner.skip(', ') or break
89
89
  end
90
90
  @scanner.skip(']') or raise Error, "no array closer: #{@scanner.inspect}"
@@ -94,7 +94,11 @@ module Tcepsni
94
94
  def parse_hash
95
95
  result = {}
96
96
  until @scanner.eos?
97
- key = parse_expression rescue break
97
+ key = begin
98
+ parse_expression
99
+ rescue StandardError
100
+ break
101
+ end
98
102
  @scanner.skip('=>') or raise Error, 'no hash arrow'
99
103
  value = parse_expression
100
104
  result[key] = value
@@ -112,7 +116,7 @@ module Tcepsni
112
116
  namespaces << parse_capitalized_identifier
113
117
  end
114
118
  *namespaces, name = namespaces
115
- Tcepsni::Class.new(name: name, namespaces: namespaces)
119
+ Tcepsni::Class.new(name:, namespaces:)
116
120
  end
117
121
 
118
122
  def parse_capitalized_identifier
@@ -129,7 +133,7 @@ module Tcepsni
129
133
  else
130
134
  memory_reference = parse_memory_reference
131
135
  attributes = parse_attributes
132
- Tcepsni::Object.new(klass: klass, memory_reference: memory_reference, attributes: attributes)
136
+ Tcepsni::Object.new(klass:, memory_reference:, attributes:)
133
137
  end
134
138
  end
135
139
 
@@ -15,11 +15,11 @@ module Tcepsni
15
15
  def self.parse(parser)
16
16
  parser.skip('Rails::Paths::Root') or raise Error, 'this is not Rails::Paths::Root'
17
17
  memory_reference = parser.parse_memory_reference
18
- if parser.skip(' ...>')
19
- attributes = {}
20
- else
21
- attributes = parser.parse_attributes
22
- end
18
+ attributes = if parser.skip(' ...>')
19
+ {}
20
+ else
21
+ parser.parse_attributes
22
+ end
23
23
  Tcepsni::Vendor::Rails::Paths::Root.new(memory_reference, attributes)
24
24
  end
25
25
 
@@ -20,7 +20,7 @@ module Tcepsni
20
20
  parser.skip(' @ "') or raise Error, "no string scanner mark in string: #{parser.scanner.inspect}"
21
21
  rest = parser.parse_string
22
22
  parser.skip('>') or raise Error, 'no string scanner closer'
23
- Tcepsni::Vendor::StringScanner.new(pos: pos, total: total, scanned: scanned, rest: rest)
23
+ Tcepsni::Vendor::StringScanner.new(pos:, total:, scanned:, rest:)
24
24
  end
25
25
 
26
26
  def self.dependencies
@@ -1,3 +1,3 @@
1
1
  module Tcepsni
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
data/lib/tcepsni.rb CHANGED
@@ -2,10 +2,10 @@ require_relative 'tcepsni/version'
2
2
  require_relative 'tcepsni/parser'
3
3
 
4
4
  module Tcepsni
5
- class Error < StandardError; end
5
+ Error = Class.new(StandardError)
6
6
 
7
7
  def self.parse(str, vendors: [])
8
- Parser.new(str, vendors: vendors).parse
8
+ Parser.new(str, vendors:).parse
9
9
  end
10
10
 
11
11
  class Class
data/tcepsni.gemspec CHANGED
@@ -9,10 +9,22 @@ Gem::Specification.new do |spec|
9
9
  spec.summary = 'inspected Ruby objects parser'
10
10
  spec.description = 'Tcepsni gem is a parser library for inspected strings of Ruby objects.'
11
11
  spec.license = 'Apache-2.0'
12
+
13
+ spec.homepage = 'https://codeberg.org/gemmaro/tcepsni'
14
+
12
15
  spec.required_ruby_version = '>= 3.1.0'
13
16
 
14
17
  spec.files = Dir['lib/**/*.rb'] + Dir['sig/**/*.rbs'] +
15
18
  ['CHANGELOG.md', 'tcepsni.gemspec', 'README.md', 'LICENSE.txt']
16
19
  spec.require_paths = ['lib']
17
- spec.metadata['rubygems_mfa_required'] = 'true'
20
+
21
+ spec.metadata = {
22
+ 'rubygems_mfa_required' => 'true',
23
+ 'bug_tracker_uri' => 'https://codeberg.org/gemmaro/tcepsni/issues',
24
+ 'changelog_uri' => 'https://codeberg.org/gemmaro/tcepsni/src/branch/main/CHANGELOG.md',
25
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/tcepsni',
26
+ 'homepage_uri' => spec.homepage,
27
+ 'source_code_uri' => spec.homepage,
28
+ 'wiki_uri' => 'https://codeberg.org/gemmaro/tcepsni/wiki'
29
+ }
18
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tcepsni
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - gemmaro
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-18 00:00:00.000000000 Z
11
+ date: 2024-07-21 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Tcepsni gem is a parser library for inspected strings of Ruby objects.
14
14
  email:
@@ -31,11 +31,17 @@ files:
31
31
  - sig/tcepsni.gen.rbs
32
32
  - sig/tcepsni.rbs
33
33
  - tcepsni.gemspec
34
- homepage:
34
+ homepage: https://codeberg.org/gemmaro/tcepsni
35
35
  licenses:
36
36
  - Apache-2.0
37
37
  metadata:
38
38
  rubygems_mfa_required: 'true'
39
+ bug_tracker_uri: https://codeberg.org/gemmaro/tcepsni/issues
40
+ changelog_uri: https://codeberg.org/gemmaro/tcepsni/src/branch/main/CHANGELOG.md
41
+ documentation_uri: https://www.rubydoc.info/gems/tcepsni
42
+ homepage_uri: https://codeberg.org/gemmaro/tcepsni
43
+ source_code_uri: https://codeberg.org/gemmaro/tcepsni
44
+ wiki_uri: https://codeberg.org/gemmaro/tcepsni/wiki
39
45
  post_install_message:
40
46
  rdoc_options: []
41
47
  require_paths: