djot 0.0.5 → 0.0.7

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: 38368915f0c2573a1daa39f56bbce7f81b66ff5a8da7253bd9f9cd414970e1b9
4
- data.tar.gz: d3828d6c7ed236474840a2c43289211c0c341b2a7a308b86633bc3e7df3b943d
3
+ metadata.gz: b05a8f0740be3ef7a6d70beef262278b751c2c2bf7b199831857a00ea1209b15
4
+ data.tar.gz: b4f037b12f3c5f96807b3b4b089df2f2b266b4e8b3cec58c4a96016b653fa143
5
5
  SHA512:
6
- metadata.gz: 93057af842daddd20a723d5132be5d97a63f456dd94fab083e2bc40955dd644fbb67bb69f1a2d38cd1f646b687733cb7d228675ac17b3b6796763d0ee593ce61
7
- data.tar.gz: 92060c827d1a52f662a804ad83a8722727cf70c3ff6e9c0bc55785262aaba1f6cc3b8e4b89dfa851ed0310ad08aadfe2c1f104c2268792f76aeb1ccb896d98b5
6
+ metadata.gz: 7c51a726fe392ac8085ea2014aab561bff1596d6f70b28583c8147fecfa2e5b8e10e70df8c0420d92cf8f997f9ac7a714c7ddab22707dccd51e14626516c9473
7
+ data.tar.gz: 1ef8cc01d4a8076d1763799d304a3b7bf67a383bdd1abe9ff3b47ddde419474175bcbf7310552be00c1bd95a2e50ef96abfc8dbe9f044e6b3c84daf202cba313
data/.mdl_style.rb ADDED
@@ -0,0 +1,4 @@
1
+ all
2
+ rule "MD007", indent: 2
3
+ exclude_rule "MD013"
4
+ exclude_rule "MD024"
data/.mdlrc ADDED
@@ -0,0 +1 @@
1
+ style ".mdl_style.rb"
data/.rubocop.yml CHANGED
@@ -15,11 +15,22 @@ Style/StringLiteralsInInterpolation:
15
15
  Layout/LineLength:
16
16
  Max: 120
17
17
 
18
- Style/Documentation:
19
- Enabled: false
20
-
21
18
  Style/FrozenStringLiteralComment:
22
19
  EnforcedStyle: never
23
20
 
21
+ Style/DocumentDynamicEvalDefinition:
22
+ Enabled: true
23
+ Exclude:
24
+ - lib/djot/javascript.rb
25
+
26
+ Metrics/ClassLength:
27
+ Enabled: false
28
+
29
+ Metrics/BlockLength:
30
+ Enabled: false
31
+
32
+ Metrics/MethodLength:
33
+ Enabled: false
34
+
24
35
  require:
25
36
  - rubocop-rake
data/.rubocop_todo.yml CHANGED
@@ -1,18 +1,15 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2023-01-21 02:00:17 UTC using RuboCop version 1.43.0.
3
+ # on 2023-05-25 12:41:00 UTC using RuboCop version 1.50.2.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 2
10
- # Configuration parameters: CountComments, CountAsOne, ExcludedMethods, AllowedMethods, AllowedPatterns, IgnoredMethods.
11
- # AllowedMethods: refine
12
- Metrics/BlockLength:
13
- Max: 37
14
-
15
9
  # Offense count: 1
16
- # Configuration parameters: CountComments, CountAsOne.
17
- Metrics/ClassLength:
18
- Max: 139
10
+ # Configuration parameters: AllowedConstants.
11
+ Style/Documentation:
12
+ Exclude:
13
+ - 'spec/**/*'
14
+ - 'test/**/*'
15
+ - 'lib/djot/pure.rb'
data/CHANGELOG.md CHANGED
@@ -2,6 +2,51 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.0.7] - 2023-05-25
6
+
7
+ ### Removed
8
+
9
+ * References to Lua implementation (djot.lua)
10
+
11
+ ### Changed
12
+
13
+ * Update djot.js to v0.2.1.
14
+
15
+ ### Fixed
16
+
17
+ * `Djot.render_html` to accept `warn` option
18
+ * Remove `Djot.render_matches`
19
+ * `Djot.render_ast` to accept `source_positions` option
20
+ * `Djot::JavaScript` to accept `source_positions` option
21
+
22
+ ### Added
23
+
24
+ * Sckelton `Djot::Pure` module for pure Ruby implementation
25
+
26
+ ## [0.0.6] - 2023-01-31
27
+
28
+ Note again that the default parser might be changed from djot.lua to djot.js in future version.
29
+
30
+ ### Added
31
+
32
+ * `Djot::Lua` module, which contains ex-`Djot.render_*` methods.
33
+ Now `Djot.render_*` methods are pointers to `Djot::Lua.render_*` (default is not changed for this release).
34
+ * Option `warn` for `Djot::JavaScript.parse`.
35
+ * `Djot::JavaScript.parse_events` method.
36
+ * Option `warn` for `Djot::JavaScript.render_html`.
37
+ (Option `overrides` are not yet supported.)
38
+ * Option `warn` and `smart_punctuation_map` for `Djot::JavaScript.to_pandoc`.
39
+ (Please caution that `warn` options has not yet tested.)
40
+ * Option `warn` for `Djot::JavaScript.from_pandoc`.
41
+ (Please caution that `warn` options has not yet tested.)
42
+
43
+ ### Changed
44
+
45
+ * JavaScript runtime has changed from ExecJS to MiniRacer, for passing Ruby proc to JavaScript runtime.
46
+ See also [rails/execjs#71 > Custom configuration of runtime](https://github.com/rails/execjs/issues/71).
47
+ * `Djot::JavaScript::VERSION` and `Djot::JavaScript::PATH` is deprecated.
48
+ Use `Djot::JavaScript.version` and `Djot::JavaScript.path` instead.
49
+
5
50
  ## [0.0.5] - 2023-01-21
6
51
 
7
52
  Note that the default parser might be changed from djot.lua to djot.js in future version.
data/Dockerfile ADDED
@@ -0,0 +1,10 @@
1
+ FROM ruby
2
+ ARG WORKDIR=/app
3
+ RUN mkdir $WORKDIR
4
+ WORKDIR $WORKDIR
5
+ COPY djot.gemspec ./djot.gemspec
6
+ COPY lib/djot/version.rb ./lib/djot/version.rb
7
+ COPY Gemfile ./Gemfile
8
+ RUN bundle -j$(nproc)
9
+ COPY . .
10
+ RUN rake
data/Gemfile CHANGED
@@ -2,9 +2,11 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
+ gem "mdl", "~> 0.12.0"
5
6
  gem "rake", "~> 13.0"
6
7
  gem "rdoc", "~> 6.4"
7
8
  gem "rubocop", "~> 1.21"
8
9
  gem "rubocop-rake", "~> 0.6.0"
9
10
  gem "steep", "~> 1.1"
10
11
  gem "test-unit", "~> 3.0"
12
+ gem "typeprof", "~> 0.21.4"
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Djot
2
2
 
3
- [Djot](https://djot.net/) parser for Ruby, using original JavaScript ([jdm/djot.js](https://github.com/jgm/djot.js)) and Lua ([djot.lua](https://github.com/jgm/djot.lua)) implementations.
3
+ [Djot](https://djot.net/) parser for Ruby, using original JavaScript ([jdm/djot.js](https://github.com/jgm/djot.js)) implementation.
4
4
 
5
5
  ## Installation
6
6
 
@@ -20,7 +20,23 @@ gem install djot
20
20
 
21
21
  ```ruby
22
22
  require 'djot'
23
+
23
24
  Djot.render_html('This is *djot*')
25
+ #=> "<p>This is <strong>djot</strong></p>\n"
26
+
27
+ Djot::JavaScript.parse("- `hello", warn: ->(w) { p w })
28
+ #=>
29
+ # {"tag"=>"doc",
30
+ # "references"=>{},
31
+ # "footnotes"=>{},
32
+ # "children"=>
33
+ # [{"tag"=>"bullet_list",
34
+ # "tight"=>true,
35
+ # "style"=>"-",
36
+ # "children"=>[{"tag"=>"list_item", "children"=>[{"tag"=>"para", "children"=>[{"tag"=>"str", "text"=>"hello"}]}]}]}]}
37
+ #
38
+ # stdout:
39
+ # {"message"=>"Unclosed verbatim", "offset"=>7}
24
40
  ```
25
41
 
26
42
  ## Development
@@ -39,8 +55,8 @@ and push the `.gem` file to [rubygems.org](https://rubygems.org).
39
55
 
40
56
  ### TODO
41
57
 
42
- * Use [Attach global Ruby functions to your JavaScript context](https://github.com/rubyjs/mini_racer#attach-global-ruby-functions-to-your-javascript-context) for the functions' options which accepts lambda expressions.
43
58
  * Create document class (and more) for idiomatic control in Ruby.
59
+ * Write parser in pure Ruby.
44
60
 
45
61
  ## Contributing
46
62
 
@@ -52,9 +68,8 @@ to the [code of conduct](CODE_OF_CONDUCT.md).
52
68
 
53
69
  ## Acknowledgement
54
70
 
55
- As mentioned earlier, this library only calls the original JavaScript and Lua implementations; the important work is done in those libraries.
56
- The Lua implementation was sufficient to render in HTML, but thanks to the more Ruby-friendly JavaScript implementation, even more flexible operations can now be performed in Ruby.
57
- This gem also uses [rails/execjs](https://github.com/rails/execjs) and [ruby-lua](https://github.com/glejeune/ruby-lua) to call JavaScript and Lua source codes respectibly.
71
+ As mentioned earlier, this library only calls the original JavaScript implementation; the important work is done in that library.
72
+ This gem also uses [MiniRacer](https://github.com/rubyjs/mini_racer) to call JavaScript source code.
58
73
 
59
74
  ## License
60
75
 
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ require "rubocop/rake_task"
11
11
 
12
12
  RuboCop::RakeTask.new
13
13
 
14
- task default: %i[copy copy_js test rubocop]
14
+ task default: %i[copy_js test rubocop sig mdl]
15
15
 
16
16
  desc "Copy JavaScript files"
17
17
  task copy_js: "lib/js/djot.js"
@@ -30,22 +30,6 @@ end
30
30
 
31
31
  directory "lib/js"
32
32
 
33
- desc "Copy Lua files"
34
- task copy: "lib/lua/djot" do
35
- license = File.read("vendor/djot/LICENSE")
36
- (["vendor/djot/djot.lua"] + Dir["vendor/djot/djot/*.lua"]).each do |file|
37
- File.write(file.sub(%r{vendor/djot}, "lib/lua"), <<~END_LUA)
38
- #{File.read(file)}
39
-
40
- --[[
41
- #{license}
42
- ]]
43
- END_LUA
44
- end
45
- end
46
-
47
- directory "lib/lua/djot"
48
-
49
33
  require "rdoc/task"
50
34
 
51
35
  RDoc::Task.new do |rdoc|
@@ -53,3 +37,20 @@ RDoc::Task.new do |rdoc|
53
37
  rdoc.main = readme
54
38
  rdoc.rdoc_files.include(readme, "lib/**/*.rb")
55
39
  end
40
+
41
+ desc "Lint Markdown files"
42
+ task "mdl" do
43
+ sh "bundle exec mdl CHANGELOG.md README.md"
44
+ end
45
+
46
+ desc "Type check"
47
+ task tc: :sig do
48
+ sh "bundle exec steep check"
49
+ end
50
+
51
+ desc "Update generated RBS"
52
+ task sig: "sig/djot.gen.rbs"
53
+
54
+ file "sig/djot.gen.rbs" => ["sig/djot.rbs", *Dir["lib/**/*.rb"]] do |t|
55
+ sh "bundle", "exec", "typeprof", "-o", t.name, *t.sources
56
+ end
data/Steepfile CHANGED
@@ -3,6 +3,8 @@ D = Steep::Diagnostic
3
3
  target :lib do
4
4
  signature "sig"
5
5
 
6
+ library "pathname"
7
+
6
8
  check "lib"
7
9
  check "Gemfile"
8
10
 
data/djot.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.email = ["gemmaro.dev@gmail.com"]
8
8
 
9
9
  spec.summary = "Djot parser"
10
- spec.description = "djot gem provides parsing functions using original JavaScript and Lua implementations"
10
+ spec.description = "djot gem provides parsing functions using original JavaScript implementation"
11
11
  spec.homepage = "https://gitlab.com/gemmaro/ruby-djot"
12
12
  spec.license = "MIT"
13
13
  spec.required_ruby_version = ">= 2.6.0"
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
26
26
  end
27
27
 
28
28
  spec.require_paths = ["lib"]
29
+ spec.rdoc_options << "--include" << "lib"
29
30
 
30
- spec.add_dependency "execjs", "~> 2.8"
31
- spec.add_dependency "ruby-lua", "~> 0.4"
31
+ spec.add_dependency "mini_racer", "~> 0.6.3"
32
32
  end
@@ -1,75 +1,146 @@
1
1
  require "pathname"
2
- require "execjs"
2
+ require "mini_racer"
3
3
 
4
4
  module Djot
5
5
  # Functionalities of djot.js
6
6
  module JavaScript
7
- PATH = Pathname(__dir__) / ".." / "js" / "djot.js"
7
+ def self.path # :nodoc:
8
+ @path ||= Pathname(__dir__ || (raise Error)) / ".." / "js" / "djot.js"
9
+ end
10
+
11
+ PATH = path # :nodoc:
8
12
 
9
- def self.source
13
+ deprecate_constant :PATH
14
+
15
+ def self.source # :nodoc:
10
16
  @source ||= PATH.read
11
17
  end
12
18
 
13
- def self.context
14
- @context ||= ExecJS.compile(source)
19
+ def self.context # :nodoc:
20
+ return @context if @context
21
+
22
+ context = MiniRacer::Context.new
23
+ context.eval("let args, result")
24
+ context.eval(source)
25
+ @context = context
15
26
  end
16
27
 
17
28
  # Correspond to +djot.parse+
18
29
  # (https://github.com/jgm/djot.js#parsing-djot-to-an-ast)
19
- #
20
- # TODO: support +warn+ option
21
- def self.parse(input, source_positions: false)
22
- context.call("djot.parse", input, { "sourcePositions" => source_positions })
30
+ def self.parse(input, source_positions: nil, warn: nil)
31
+ args = [input]
32
+ options = {}
33
+ options["sourcePositions"] = source_positions if source_positions
34
+ args << options
35
+ context.eval("args = #{JSON.generate(args)}")
36
+ if warn
37
+ context.attach("warn", warn)
38
+ context.eval('args[1]["warn"] = warn')
39
+ end
40
+ context.eval("djot.parse.apply(this, args)")
23
41
  end
24
42
 
25
- # TODO: support +djot.EventParser+
43
+ # Correspond to +djot.parseEvents+
26
44
  # (https://github.com/jgm/djot.js#parsing-djot-to-a-stream-of-events)
45
+ def self.parse_events(input, warn: nil, &block)
46
+ context.eval("args = #{JSON.generate([input, {}])}")
47
+ if warn
48
+ context.attach("warn", warn)
49
+ context.eval('args[1]["warn"] = warn')
50
+ end
51
+ source = if block_given?
52
+ context.attach("fun", block)
53
+ <<~END_JAVASCRIPT
54
+ for (let event of djot.parseEvents(...args)) {
55
+ fun(event)
56
+ }
57
+ END_JAVASCRIPT
58
+ else
59
+ # TODO: Use enum_for
60
+ <<~END_JAVASCRIPT
61
+ events = []
62
+ for (let event of djot.parseEvents(...args)) {
63
+ events.push(event)
64
+ }
65
+ events
66
+ END_JAVASCRIPT
67
+ end
68
+ context.eval(source)
69
+ end
27
70
 
28
71
  # Correspond to +djot.renderAST+
29
72
  # (https://github.com/jgm/djot.js#pretty-printing-the-djot-ast)
30
- def self.render_ast(doc)
31
- context.call("djot.renderAST", doc)
73
+ def self.render_ast(doc, source_positions: false)
74
+ args = [doc]
75
+ args << { "sourcePositions" => source_positions } if source_positions
76
+ context.eval("djot.renderAST.apply(this, #{JSON.generate(args)})")
32
77
  end
33
78
 
34
79
  # Correspond to +djot.renderHTML+
35
80
  # (https://github.com/jgm/djot.js#rendering-the-djot-ast-to-html)
36
81
  #
37
- # TODO: support +options+
38
- def self.render_html(doc)
39
- context.call("djot.renderHTML", doc)
82
+ # TODO: support +overrides+ option
83
+ def self.render_html(doc, warn: nil)
84
+ context.eval("args = #{JSON.generate([doc, {}])}")
85
+ if warn
86
+ context.attach("warn", warn)
87
+ context.eval('args[1]["warn"] = warn')
88
+ end
89
+ context.eval("djot.renderHTML.apply(this, args)")
40
90
  end
41
91
 
42
92
  # Correspond to +djot.renderDjot+
43
93
  # (https://github.com/jgm/djot.js#rendering-djot)
44
- #
45
- # TODO: support options
46
94
  def self.render_djot(doc, wrap_width: nil)
47
95
  options = {}
48
96
  options["wrapWidth"] = wrap_width if wrap_width
49
97
 
50
- context.call("djot.renderDjot", doc, options)
98
+ call("renderDjot", doc, options)
51
99
  end
52
100
 
53
101
  # Correspond to +djot.toPandoc+
54
102
  # (https://github.com/jgm/djot.js#pandoc-interoperability)
55
103
  #
56
- # TODO: support +warn+ and +smart_punctuation_map+ option
57
- def self.to_pandoc(doc)
58
- context.call("djot.toPandoc", doc)
104
+ # CAUTION: +warn+ option hasn't yet tested.
105
+ # There may be bugs.
106
+ def self.to_pandoc(doc, warn: nil, smart_punctuation_map: nil)
107
+ options = {}
108
+ options["smartPunctuationMap"] = smart_punctuation_map if smart_punctuation_map
109
+ context.eval("args = #{JSON.generate([doc, options])}")
110
+ if warn
111
+ context.attach("warn", warn)
112
+ context.eval('args[1]["warn"] = warn')
113
+ end
114
+ context.eval("djot.toPandoc.apply(this, args)")
59
115
  end
60
116
 
61
117
  # Correspond to +djot.fromPandoc+
62
118
  # (https://github.com/jgm/djot.js#pandoc-interoperability)
63
119
  #
64
- # TODO: support options
65
- def self.from_pandoc(pandoc)
66
- context.call("djot.fromPandoc", pandoc)
120
+ # CAUTION: +warn+ options hasn't yet tested.
121
+ def self.from_pandoc(pandoc, warn: nil)
122
+ context.eval("args = #{JSON.generate([pandoc, {}])}")
123
+ if warn
124
+ context.attach("warn", warn)
125
+ context.eval('args[1]["warn"] = warn')
126
+ end
127
+ context.eval("djot.fromPandoc.apply(this, args)")
67
128
  end
68
129
 
69
130
  # TODO: support filters
70
131
 
71
132
  # Correspond to +djot.version+
72
133
  # (https://github.com/jgm/djot.js#getting-the-version)
73
- VERSION = context.eval("djot.version")
134
+ def self.version
135
+ @version ||= context.eval("djot.version")
136
+ end
137
+
138
+ VERSION = version # :nodoc:
139
+
140
+ deprecate_constant :VERSION
141
+
142
+ def self.call(name, *args) # :nodoc:
143
+ context.eval("djot.#{name}.apply(this, #{::JSON.generate(args)})")
144
+ end
74
145
  end
75
146
  end
data/lib/djot/pure.rb ADDED
@@ -0,0 +1,4 @@
1
+ module Djot
2
+ module Pure
3
+ end
4
+ end
data/lib/djot/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Djot
2
- VERSION = "0.0.5".freeze
2
+ VERSION = "0.0.7".freeze
3
3
  end
data/lib/djot.rb CHANGED
@@ -1,49 +1,18 @@
1
1
  require_relative "djot/version"
2
2
  require_relative "djot/javascript"
3
- require "language/lua"
4
- require "pathname"
3
+ require_relative "djot/pure"
5
4
 
5
+ # Provides Djot parsing functionalities.
6
+ # +Djot.*+ methods are pointing to JavaScript implementation now.
7
+ # See also Djot::JavaScript for ones pointing to JavaScript implementation.
6
8
  module Djot
7
9
  class Error < StandardError; end
8
10
 
9
- LUA = Language::Lua.new
10
- LUA.eval(<<~END_LUA)
11
- function djot_parser(input)
12
- local parser = require("djot").Parser:new(input)
13
- parser:parse()
14
- return parser
15
- end
16
-
17
- function djot_render_html(input)
18
- return djot_parser(input):render_html()
19
- end
20
-
21
- function djot_render_matches(input)
22
- return djot_parser(input):render_matches()
23
- end
24
-
25
- function djot_render_ast(input)
26
- return djot_parser(input):render_ast()
27
- end
28
- END_LUA
29
-
30
- ROOT = Pathname(__dir__) / "lua"
31
-
32
- def self.render_html(input)
33
- Dir.chdir(ROOT) do
34
- LUA.djot_render_html(input)
35
- end
36
- end
37
-
38
- def self.render_matches(input)
39
- Dir.chdir(ROOT) do
40
- LUA.djot_render_matches(input)
41
- end
11
+ def self.render_html(doc, warn: nil)
12
+ JavaScript.render_html(doc, warn: warn)
42
13
  end
43
14
 
44
- def self.render_ast(input)
45
- Dir.chdir(ROOT) do
46
- LUA.djot_render_ast(input)
47
- end
15
+ def self.render_ast(input, source_positions: false)
16
+ JavaScript.render_ast(input, source_positions: source_positions)
48
17
  end
49
18
  end
data/manifest.scm ADDED
@@ -0,0 +1,2 @@
1
+ (specifications->manifest (list "ruby-test-unit" "ruby-rubocop"
2
+ "ruby-rubocop-rake" "ruby" "node"))
data/sig/djot.gen.rbs ADDED
@@ -0,0 +1,32 @@
1
+ # TypeProf 0.21.7
2
+
3
+ # Classes
4
+ module Djot
5
+ VERSION: String
6
+
7
+ def self.render_html: (untyped input) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
8
+ def self.render_matches: (untyped input) -> untyped
9
+ def self.render_ast: (untyped input) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
10
+
11
+ module JavaScript
12
+ PATH: Pathname
13
+ VERSION: (Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?
14
+ self.@path: Pathname
15
+ self.@version: (Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?
16
+ self.@context: MiniRacer::Context
17
+ self.@source: String
18
+
19
+ def self.path: -> Pathname
20
+ def self.source: -> String
21
+ def self.context: -> MiniRacer::Context?
22
+ def self.parse: (untyped input, ?source_positions: nil, ?warn: nil) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
23
+ def self.parse_events: (untyped input, ?warn: nil) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
24
+ def self.render_ast: (untyped doc) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
25
+ def self.render_html: (untyped doc, ?warn: nil) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
26
+ def self.render_djot: (untyped doc, ?wrap_width: nil) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
27
+ def self.to_pandoc: (untyped doc, ?warn: nil, ?smart_punctuation_map: nil) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
28
+ def self.from_pandoc: (untyped pandoc, ?warn: nil) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
29
+ def self.version: -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
30
+ def self.call: (String name, *Hash[String, untyped] args) -> ((Array[untyped] | Hash[untyped, untyped] | MiniRacer::JavaScriptFunction | Time)?)
31
+ end
32
+ end
data/sig/djot.rbs CHANGED
@@ -1,6 +1,8 @@
1
+ # TODO
1
2
  module Djot
2
- VERSION: String
3
- def self.render_html: (String) -> String
4
- def self.render_matches: (String) -> String
5
- def self.render_ast: (String) -> String
3
+ module JavaScript
4
+ end
5
+
6
+ class Error < StandardError
7
+ end
6
8
  end