jpt 0.0.3 → 0.0.5

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: 5b81541e6476a9486b10d2442106aa6d61c6000b72535bc317806d0b3f93f47d
4
- data.tar.gz: 675c96f768ce4f33cb4f2012683ad5afd4c21b28dd99bbf62dd027a4976060e1
3
+ metadata.gz: 2556dc372f83257488713fad1a473be979587873c8cb31d0f4833c736d286533
4
+ data.tar.gz: cff64906279a4fdff9e10be53807e29a074c9d0ae3890ebbc756b9fd5ee49d41
5
5
  SHA512:
6
- metadata.gz: 5e5714c5e9d9fb9ec3e1961653978bba3477fa5c95601fbb949b153434ecd6820f020b54277237e8961a9321fd2a7a93db9ce42b7781ccfeccc4a6cca1355226
7
- data.tar.gz: 1ba0a3379ebe75a2ae308da8676e94f3510d9ea044196aa2516b12f3f2b35eff783e4d7df40f1e0c29b2b6431093a58a8234f3caa857e18cec2667c3764ffb00
6
+ metadata.gz: 964781ffc90ec14022559b5128a0cecbb50ac4f6ae4ce1e1fd1a5b57031c663efc6557b65626b187916eb6ce9ad0be169bc5a2a155f8c97c9652de8cc5355342
7
+ data.tar.gz: c2e910750fb6180465cf673f33232f103e6d4dcf772351bafeb2c468c2579ba25a51bab15395dadf046e69003617e4842accdac33dd0fef72046bcabd239a00a
data/bin/jpt CHANGED
@@ -10,6 +10,8 @@ Encoding.default_external = Encoding::UTF_8
10
10
  require 'optparse'
11
11
  require 'ostruct'
12
12
 
13
+ FUNCSIG_CHARS = {"l" => :logical, "n" => :nodes, "v" => :value}
14
+
13
15
  $options = OpenStruct.new
14
16
  begin
15
17
  op = OptionParser.new do |opts|
@@ -21,6 +23,11 @@ begin
21
23
  opts.on("-l", "--[no-]lines", "multi-line mode") do |v|
22
24
  $options.lines = v
23
25
  end
26
+ opts.on("-fFUNCSIG", "--[no-]f=FUNCSIG", "add function signature name=rppp") do |v|
27
+ fail "funcsig format must be name=rppp" unless v =~ /\A([a-z][_a-z0-9]*)-([lnv]+)\z/
28
+
29
+ JPTType.add_funcsig($1, $2)
30
+ end
24
31
  opts.on("-tFMT", "--to=FMT", [:basic, :neat, :json, :yaml, :enum, :jp], "Target format") do |v|
25
32
  $options.target = v
26
33
  end
data/jpt.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "jpt"
3
- s.version = "0.0.3"
3
+ s.version = "0.0.5"
4
4
  s.summary = "JSONPath tools"
5
5
  s.description = %q{jpt implements converters and miscellaneous tools for JSONPath}
6
6
  s.author = "Carsten Bormann"
data/lib/jpt.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  module JPTType
2
2
  # :value, :nodes, :logical
3
3
 
4
+
5
+ FUNCSIG_CHARS = {"l" => :logical, "n" => :nodes, "v" => :value}
6
+
4
7
  FUNCTABLE = {
5
8
  "length" => [:value, :value],
6
9
  "count" => [:value, :nodes],
@@ -8,6 +11,10 @@ module JPTType
8
11
  "search" => [:logical, :value, :value],
9
12
  }
10
13
 
14
+ def self.add_funcsig(name, sig)
15
+ FUNCTABLE[name] = sig.chars.map {FUNCSIG_CHARS[_1]}
16
+ end
17
+
11
18
  def declared_type(ast)
12
19
  case ast
13
20
  in Numeric | String | false | true | nil
@@ -3087,12 +3087,18 @@ module JPTGRAMMAR
3087
3087
  end
3088
3088
 
3089
3089
  module NameSegment1
3090
+ def ast
3091
+ elements[1].ast
3092
+ end
3093
+ end
3094
+
3095
+ module NameSegment2
3090
3096
  def member_name_shorthand
3091
3097
  elements[1]
3092
3098
  end
3093
3099
  end
3094
3100
 
3095
- module NameSegment2
3101
+ module NameSegment3
3096
3102
  def ast
3097
3103
  elements[1].ast
3098
3104
  end
@@ -3136,6 +3142,7 @@ module JPTGRAMMAR
3136
3142
  if s1.last
3137
3143
  r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
3138
3144
  r1.extend(NameSegment0)
3145
+ r1.extend(NameSegment1)
3139
3146
  else
3140
3147
  @index = i1
3141
3148
  r1 = nil
@@ -3159,8 +3166,8 @@ module JPTGRAMMAR
3159
3166
  end
3160
3167
  if s5.last
3161
3168
  r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
3162
- r5.extend(NameSegment1)
3163
3169
  r5.extend(NameSegment2)
3170
+ r5.extend(NameSegment3)
3164
3171
  else
3165
3172
  @index = i5
3166
3173
  r5 = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jpt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carsten Bormann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-20 00:00:00.000000000 Z
11
+ date: 2023-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler