commonmarker 1.0.0.pre8 → 1.0.0.pre11

Sign up to get free protection for your applications and to get access to all the features.
data/Cargo.toml ADDED
@@ -0,0 +1,6 @@
1
+ # This Cargo.toml is here to let externals tools (IDEs, etc.) know that this is
2
+ # a Rust project. Your extensions depedencies should be added to the Cargo.toml
3
+ # in the ext/ directory.
4
+
5
+ [workspace]
6
+ members = ["ext/commonmarker"]
@@ -4,9 +4,9 @@ version = "1.0.0"
4
4
  edition = "2021"
5
5
 
6
6
  [dependencies]
7
- magnus = "0.5"
8
- comrak = { version = "0.16", features = ["shortcodes"] }
9
- syntect = { version = "5.0", features = ["plist-load"] }
7
+ magnus = "0.6"
8
+ comrak = { version = "0.19", features = ["shortcodes"] }
9
+ syntect = { version = "5.1", features = ["plist-load"] }
10
10
 
11
11
  [lib]
12
12
  name = "commonmarker"
@@ -1,6 +1,4 @@
1
1
  require "mkmf"
2
2
  require "rb_sys/mkmf"
3
3
 
4
- require_relative "_util"
5
-
6
4
  create_rust_makefile("commonmarker/commonmarker")
@@ -29,13 +29,9 @@ mod utils;
29
29
 
30
30
  pub const EMPTY_STR: &str = "";
31
31
 
32
- fn commonmark_to_html<'a>(args: &[Value]) -> Result<String, magnus::Error> {
33
- let args = scan_args::scan_args(args)?;
32
+ fn commonmark_to_html(args: &[Value]) -> Result<String, magnus::Error> {
33
+ let args = scan_args::scan_args::<_, (), (), (), _, ()>(args)?;
34
34
  let (rb_commonmark,): (String,) = args.required;
35
- let _: () = args.optional;
36
- let _: () = args.splat;
37
- let _: () = args.trailing;
38
- let _: () = args.block;
39
35
 
40
36
  let kwargs = scan_args::get_kwargs::<_, (), (Option<RHash>, Option<RHash>), ()>(
41
37
  args.keywords,
@@ -76,7 +72,7 @@ fn commonmark_to_html<'a>(args: &[Value]) -> Result<String, magnus::Error> {
76
72
  if !path.eq(&PathBuf::from("".to_string())) && !path.exists() {
77
73
  return Err(Error::new(
78
74
  exception::arg_error(),
79
- format!("path does not exist"),
75
+ "path does not exist".to_string(),
80
76
  ));
81
77
  }
82
78
 
@@ -2,6 +2,8 @@ use std::borrow::Cow;
2
2
 
3
3
  use comrak::ComrakOptions;
4
4
 
5
+ use magnus::value::ReprValue;
6
+ use magnus::TryConvert;
5
7
  use magnus::{class, r_hash::ForEach, Error, RHash, Symbol, Value};
6
8
 
7
9
  use crate::utils::try_convert_string;
@@ -14,7 +16,7 @@ fn iterate_parse_options(comrak_options: &mut ComrakOptions, options_hash: RHash
14
16
  .foreach(|key: Symbol, value: Value| {
15
17
  match key.name() {
16
18
  Ok(Cow::Borrowed(PARSE_SMART)) => {
17
- comrak_options.parse.smart = value.try_convert::<bool>()?;
19
+ comrak_options.parse.smart = TryConvert::try_convert(value)?;
18
20
  }
19
21
  Ok(Cow::Borrowed(PARSE_DEFAULT_INFO_STRING)) => {
20
22
  comrak_options.parse.default_info_string = try_convert_string(value);
@@ -37,19 +39,19 @@ fn iterate_render_options(comrak_options: &mut ComrakOptions, options_hash: RHas
37
39
  .foreach(|key: Symbol, value: Value| {
38
40
  match key.name() {
39
41
  Ok(Cow::Borrowed(RENDER_HARDBREAKS)) => {
40
- comrak_options.render.hardbreaks = value.try_convert::<bool>()?;
42
+ comrak_options.render.hardbreaks = TryConvert::try_convert(value)?;
41
43
  }
42
44
  Ok(Cow::Borrowed(RENDER_GITHUB_PRE_LANG)) => {
43
- comrak_options.render.github_pre_lang = value.try_convert::<bool>()?;
45
+ comrak_options.render.github_pre_lang = TryConvert::try_convert(value)?;
44
46
  }
45
47
  Ok(Cow::Borrowed(RENDER_WIDTH)) => {
46
- comrak_options.render.width = value.try_convert::<usize>()?;
48
+ comrak_options.render.width = TryConvert::try_convert(value)?;
47
49
  }
48
50
  Ok(Cow::Borrowed(RENDER_UNSAFE)) => {
49
- comrak_options.render.unsafe_ = value.try_convert::<bool>()?;
51
+ comrak_options.render.unsafe_ = TryConvert::try_convert(value)?;
50
52
  }
51
53
  Ok(Cow::Borrowed(RENDER_ESCAPE)) => {
52
- comrak_options.render.escape = value.try_convert::<bool>()?;
54
+ comrak_options.render.escape = TryConvert::try_convert(value)?;
53
55
  }
54
56
  _ => {}
55
57
  }
@@ -75,37 +77,41 @@ fn iterate_extension_options(comrak_options: &mut ComrakOptions, options_hash: R
75
77
  .foreach(|key: Symbol, value: Value| {
76
78
  match key.name() {
77
79
  Ok(Cow::Borrowed(EXTENSION_STRIKETHROUGH)) => {
78
- comrak_options.extension.strikethrough = value.try_convert::<bool>()?;
80
+ comrak_options.extension.strikethrough = TryConvert::try_convert(value)?;
79
81
  }
80
82
  Ok(Cow::Borrowed(EXTENSION_TAGFILTER)) => {
81
- comrak_options.extension.tagfilter = value.try_convert::<bool>()?;
83
+ comrak_options.extension.tagfilter = TryConvert::try_convert(value)?;
82
84
  }
83
85
  Ok(Cow::Borrowed(EXTENSION_TABLE)) => {
84
- comrak_options.extension.table = value.try_convert::<bool>()?;
86
+ comrak_options.extension.table = TryConvert::try_convert(value)?;
85
87
  }
86
88
  Ok(Cow::Borrowed(EXTENSION_AUTOLINK)) => {
87
- comrak_options.extension.autolink = value.try_convert::<bool>()?;
89
+ comrak_options.extension.autolink = TryConvert::try_convert(value)?;
88
90
  }
89
91
  Ok(Cow::Borrowed(EXTENSION_TASKLIST)) => {
90
- comrak_options.extension.tasklist = value.try_convert::<bool>()?;
92
+ comrak_options.extension.tasklist = TryConvert::try_convert(value)?;
91
93
  }
92
94
  Ok(Cow::Borrowed(EXTENSION_SUPERSCRIPT)) => {
93
- comrak_options.extension.superscript = value.try_convert::<bool>()?;
95
+ comrak_options.extension.superscript = TryConvert::try_convert(value)?;
94
96
  }
95
97
  Ok(Cow::Borrowed(EXTENSION_HEADER_IDS)) => {
96
98
  comrak_options.extension.header_ids = try_convert_string(value);
97
99
  }
98
100
  Ok(Cow::Borrowed(EXTENSION_FOOTNOTES)) => {
99
- comrak_options.extension.footnotes = value.try_convert::<bool>()?;
101
+ comrak_options.extension.footnotes = TryConvert::try_convert(value)?;
100
102
  }
101
103
  Ok(Cow::Borrowed(EXTENSION_DESCRIPTION_LISTS)) => {
102
- comrak_options.extension.description_lists = value.try_convert::<bool>()?;
104
+ comrak_options.extension.description_lists = TryConvert::try_convert(value)?;
103
105
  }
104
106
  Ok(Cow::Borrowed(EXTENSION_FRONT_MATTER_DELIMITER)) => {
105
- comrak_options.extension.front_matter_delimiter = try_convert_string(value);
107
+ if let Some(option) = try_convert_string(value) {
108
+ if !option.is_empty() {
109
+ comrak_options.extension.front_matter_delimiter = Some(option);
110
+ }
111
+ }
106
112
  }
107
113
  Ok(Cow::Borrowed(EXTENSION_SHORTCODES)) => {
108
- comrak_options.extension.shortcodes = value.try_convert::<bool>()?;
114
+ comrak_options.extension.shortcodes = TryConvert::try_convert(value)?;
109
115
  }
110
116
  _ => {}
111
117
  }
@@ -1,6 +1,7 @@
1
1
  use std::path::PathBuf;
2
2
 
3
- use magnus::{RHash, Symbol, Value};
3
+ use magnus::value::ReprValue;
4
+ use magnus::{RHash, Symbol, TryConvert, Value};
4
5
 
5
6
  use crate::EMPTY_STR;
6
7
 
@@ -14,7 +15,7 @@ pub fn fetch_syntax_highlighter_theme(value: Value) -> Result<String, magnus::Er
14
15
  return Ok(EMPTY_STR.to_string());
15
16
  }
16
17
 
17
- let syntax_highlighter_plugin = value.try_convert::<RHash>()?;
18
+ let syntax_highlighter_plugin: RHash = TryConvert::try_convert(value)?;
18
19
  let theme_key = Symbol::new(SYNTAX_HIGHLIGHTER_PLUGIN_THEME_KEY);
19
20
 
20
21
  match syntax_highlighter_plugin.get(theme_key) {
@@ -38,7 +39,7 @@ pub fn fetch_syntax_highlighter_path(value: Value) -> Result<PathBuf, magnus::Er
38
39
  return Ok(PathBuf::from(EMPTY_STR));
39
40
  }
40
41
 
41
- let syntax_highlighter_plugin = value.try_convert::<RHash>()?;
42
+ let syntax_highlighter_plugin: RHash = TryConvert::try_convert(value)?;
42
43
  let path_key = Symbol::new(SYNTAX_HIGHLIGHTER_PLUGIN_PATH_KEY);
43
44
 
44
45
  match syntax_highlighter_plugin.get(path_key) {
@@ -47,8 +48,8 @@ pub fn fetch_syntax_highlighter_path(value: Value) -> Result<PathBuf, magnus::Er
47
48
  // `syntax_highlighter: { path: nil }`
48
49
  return Ok(PathBuf::from(EMPTY_STR));
49
50
  }
50
-
51
- Ok(PathBuf::from(path.try_convert::<String>()?))
51
+ let val: String = TryConvert::try_convert(path)?;
52
+ Ok(PathBuf::from(val))
52
53
  }
53
54
  None => {
54
55
  // `syntax_highlighter: { }`
@@ -1,21 +1,3 @@
1
- // use comrak::ComrakPlugins;
2
- // use magnus::{class, r_hash::ForEach, RHash, Symbol, Value};
3
-
4
- // use crate::plugins::syntax_highlighting::fetch_syntax_highlighter_theme;
5
-
6
1
  pub mod syntax_highlighting;
7
2
 
8
3
  pub const SYNTAX_HIGHLIGHTER_PLUGIN: &str = "syntax_highlighter";
9
-
10
- // pub fn iterate_plugins_hash(
11
- // comrak_plugins: &mut ComrakPlugins,
12
- // mut theme: String,
13
- // key: Symbol,
14
- // value: Value,
15
- // ) -> Result<ForEach, magnus::Error> {
16
- // if key.name().unwrap() == SYNTAX_HIGHLIGHTER_PLUGIN {
17
- // theme = fetch_syntax_highlighter_theme(value)?;
18
- // }
19
-
20
- // Ok(ForEach::Continue)
21
- // }
@@ -1,7 +1,7 @@
1
- use magnus::Value;
1
+ use magnus::{TryConvert, Value};
2
2
 
3
3
  pub fn try_convert_string(value: Value) -> Option<String> {
4
- match value.try_convert::<String>() {
4
+ match TryConvert::try_convert(value) {
5
5
  Ok(s) => Some(s),
6
6
  Err(_) => None,
7
7
  }
@@ -26,7 +26,7 @@ module Commonmarker
26
26
  header_ids: "",
27
27
  footnotes: false,
28
28
  description_lists: false,
29
- front_matter_delimiter: nil,
29
+ front_matter_delimiter: "",
30
30
  shortcodes: true,
31
31
  },
32
32
  format: [:html].freeze,
@@ -79,7 +79,7 @@ module Commonmarker
79
79
 
80
80
  [:syntax_highlighter].each do |type|
81
81
  define_singleton_method :"process_#{type}_plugin" do |plugin|
82
- return nil if plugin.nil? # plugin explicitly nil, remove it
82
+ return if plugin.nil? # plugin explicitly nil, remove it
83
83
 
84
84
  Commonmarker::Config::PLUGINS[type].each_with_object({}) do |(key, value), hash|
85
85
  if plugin.nil? # option not provided, go for the default
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Commonmarker
4
- VERSION = "1.0.0.pre8"
4
+ VERSION = "1.0.0.pre11"
5
5
  end
data/lib/commonmarker.rb CHANGED
@@ -7,11 +7,6 @@ require "commonmarker/config"
7
7
  require "commonmarker/renderer"
8
8
  require "commonmarker/version"
9
9
 
10
- if ENV.fetch("DEBUG", false)
11
- require "awesome_print"
12
- require "debug"
13
- end
14
-
15
10
  module Commonmarker
16
11
  class << self
17
12
  # Public: Parses a CommonMark string into an HTML string.
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commonmarker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre8
4
+ version: 1.0.0.pre11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Garen Torikian
8
8
  - Ashe Connor
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2023-03-09 00:00:00.000000000 Z
12
+ date: 2023-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rb_sys
@@ -54,33 +54,19 @@ dependencies:
54
54
  - - "~>"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '1.2'
57
- - !ruby/object:Gem::Dependency
58
- name: rake-compiler-dock
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - "~>"
62
- - !ruby/object:Gem::Version
63
- version: '1.2'
64
- type: :development
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - "~>"
69
- - !ruby/object:Gem::Version
70
- version: '1.2'
71
57
  description: A fast, safe, extensible parser for CommonMark. This wraps the comrak
72
58
  Rust crate.
73
- email:
59
+ email:
74
60
  executables: []
75
61
  extensions:
76
62
  - ext/commonmarker/extconf.rb
77
63
  extra_rdoc_files: []
78
64
  files:
79
65
  - Cargo.lock
66
+ - Cargo.toml
80
67
  - LICENSE.txt
81
68
  - README.md
82
69
  - ext/commonmarker/Cargo.toml
83
- - ext/commonmarker/_util.rb
84
70
  - ext/commonmarker/extconf.rb
85
71
  - ext/commonmarker/src/lib.rs
86
72
  - ext/commonmarker/src/options.rs
@@ -102,7 +88,7 @@ metadata:
102
88
  funding_uri: https://github.com/sponsors/gjtorikian/
103
89
  source_code_uri: https://github.com/gjtorikian/commonmarker
104
90
  rubygems_mfa_required: 'true'
105
- post_install_message:
91
+ post_install_message:
106
92
  rdoc_options: []
107
93
  require_paths:
108
94
  - lib
@@ -117,8 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
103
  - !ruby/object:Gem::Version
118
104
  version: 3.3.22
119
105
  requirements: []
120
- rubygems_version: 3.4.4
121
- signing_key:
106
+ rubygems_version: 3.4.21
107
+ signing_key:
122
108
  specification_version: 4
123
109
  summary: CommonMark parser and renderer. Written in Rust, wrapped in Ruby.
124
110
  test_files: []
@@ -1,102 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- RUBY_MAJOR, RUBY_MINOR = RUBY_VERSION.split(".").collect(&:to_i)
4
-
5
- PACKAGE_ROOT_DIR = File.expand_path(File.join(File.dirname(__FILE__), "..", ".."))
6
- PACKAGE_EXT_DIR = File.join(PACKAGE_ROOT_DIR, "ext", "commonmarker")
7
-
8
- OS = case os = RbConfig::CONFIG["host_os"].downcase
9
- when /linux/
10
- # The official ruby-alpine Docker containers pre-build Ruby. As a result,
11
- # Ruby doesn't know that it's on a musl-based platform. `ldd` is the
12
- # a more reliable way to detect musl.
13
- # See https://github.com/skylightio/skylight-ruby/issues/92
14
- if ENV["SKYLIGHT_MUSL"] || %x(ldd --version 2>&1).include?("musl")
15
- "linux-musl"
16
- else
17
- "linux"
18
- end
19
- when /darwin/
20
- "darwin"
21
- when /freebsd/
22
- "freebsd"
23
- when /netbsd/
24
- "netbsd"
25
- when /openbsd/
26
- "openbsd"
27
- when /sunos|solaris/
28
- "solaris"
29
- when /mingw|mswin/
30
- "windows"
31
- else
32
- os
33
- end
34
-
35
- # Normalize the platform CPU
36
- ARCH = case cpu = RbConfig::CONFIG["host_cpu"].downcase
37
- when /amd64|x86_64|x64/
38
- "x86_64"
39
- when /i?86|x86|i86pc/
40
- "x86"
41
- when /ppc|powerpc/
42
- "powerpc"
43
- when /^aarch/
44
- "aarch"
45
- when /^arm/
46
- "arm"
47
- else
48
- cpu
49
- end
50
-
51
- def windows?
52
- OS == "windows"
53
- end
54
-
55
- def solaris?
56
- OS == solaries
57
- end
58
-
59
- def darwin?
60
- OS == "darwin"
61
- end
62
-
63
- def macos?
64
- darwin? || OS == "macos"
65
- end
66
-
67
- def openbsd?
68
- OS == "openbsd"
69
- end
70
-
71
- def aix?
72
- OS == "aix"
73
- end
74
-
75
- def nix?
76
- !(windows? || solaris? || darwin?)
77
- end
78
-
79
- def x86_64?
80
- ARCH == "x86_64"
81
- end
82
-
83
- def x86?
84
- ARCH == "x86"
85
- end
86
-
87
- def abs_path(path)
88
- File.join(PACKAGE_EXT_DIR, path)
89
- end
90
-
91
- def find_header_or_abort(header, *paths)
92
- find_header(header, *paths) || abort("#{header} was expected in `#{paths.join(", ")}`, but it is missing.")
93
- end
94
-
95
- def find_library_or_abort(lib, func, *paths)
96
- find_library(lib, func, *paths) || abort("#{lib} was expected in `#{paths.join(", ")}`, but it is missing.")
97
- end
98
-
99
- def concat_flags(*args)
100
- args.compact.join(" ")
101
- end
102
-