marked-conductor 1.0.12 → 1.0.14

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.
data/html/created.rid CHANGED
@@ -1,14 +1,15 @@
1
- Wed, 01 May 2024 13:06:18 -0500
1
+ Sat, 25 May 2024 06:41:22 -0500
2
2
  README.rdoc Sun, 28 Apr 2024 13:21:34 -0500
3
- lib/conductor.rb Wed, 01 May 2024 13:05:15 -0500
3
+ lib/conductor.rb Fri, 24 May 2024 12:23:17 -0500
4
4
  lib/conductor/array.rb Sat, 27 Apr 2024 11:54:28 -0500
5
5
  lib/conductor/boolean.rb Thu, 25 Apr 2024 14:25:59 -0500
6
6
  lib/conductor/command.rb Sat, 27 Apr 2024 11:54:28 -0500
7
7
  lib/conductor/condition.rb Mon, 29 Apr 2024 09:19:15 -0500
8
8
  lib/conductor/config.rb Sat, 27 Apr 2024 11:54:28 -0500
9
9
  lib/conductor/env.rb Mon, 29 Apr 2024 09:28:21 -0500
10
+ lib/conductor/filter.rb Sat, 25 May 2024 06:38:24 -0500
10
11
  lib/conductor/hash.rb Sat, 27 Apr 2024 11:54:28 -0500
11
12
  lib/conductor/script.rb Sun, 28 Apr 2024 16:21:49 -0500
12
- lib/conductor/string.rb Mon, 29 Apr 2024 09:46:03 -0500
13
- lib/conductor/version.rb Mon, 29 Apr 2024 09:46:58 -0500
14
- bin/conductor Sun, 28 Apr 2024 16:24:45 -0500
13
+ lib/conductor/string.rb Sat, 25 May 2024 06:20:54 -0500
14
+ lib/conductor/version.rb Fri, 24 May 2024 13:13:06 -0500
15
+ bin/conductor Fri, 24 May 2024 12:39:06 -0500
data/html/index.html CHANGED
@@ -78,6 +78,7 @@
78
78
  <li><code><a href="./Conductor/Script.html">Script</a></code>
79
79
  </ul></details>
80
80
  <li><code><a href="./FalseClass.html">FalseClass</a></code>
81
+ <li><code><a href="./Filter.html">Filter</a></code>
81
82
  <li><code><a href="./Hash.html">Hash</a></code>
82
83
  <li><code><a href="./Object.html">Object</a></code>
83
84
  <li><code><a href="./String.html">String</a></code>
@@ -1 +1 @@
1
- var search_data = {"index":{"searchIndex":["array","conductor","command","condition","config","env","script","falseclass","hash","object","string","trueclass","args=()","args=()","bool?()","bool?()","bool?()","bool_to_symbol()","clean_condition()","conduct()","create_config()","date?()","env()","execute_track()","load_test_env()","meta?()","new()","new()","new()","new()","number?()","operator_to_symbol()","parse_condition()","path=()","path=()","run()","run()","sample_config()","split_booleans()","split_condition()","stdin()","strip_time()","symbolize_keys()","symbolize_keys()","symbolize_keys!()","symbolize_keys!()","test_condition()","test_meta()","test_operator()","test_pandoc()","test_string()","test_tree()","test_truthy()","test_type()","test_yaml()","time?()","to_bool()","to_bool!()","to_date()","to_day()","to_s()","true?()","yaml?()","readme"],"longSearchIndex":["array","conductor","conductor::command","conductor::condition","conductor::config","conductor::env","conductor::script","falseclass","hash","object","string","trueclass","conductor::command#args=()","conductor::script#args=()","falseclass#bool?()","string#bool?()","trueclass#bool?()","string#bool_to_symbol()","object#clean_condition()","conductor::conduct()","conductor#create_config()","string#date?()","conductor::env::env()","conductor::execute_track()","conductor::env::load_test_env()","string#meta?()","conductor::command::new()","conductor::condition::new()","conductor::config::new()","conductor::script::new()","string#number?()","conductor::condition#operator_to_symbol()","conductor::condition#parse_condition()","conductor::command#path=()","conductor::script#path=()","conductor::command#run()","conductor::script#run()","conductor#sample_config()","conductor::condition#split_booleans()","conductor::condition#split_condition()","conductor::stdin()","string#strip_time()","array#symbolize_keys()","hash#symbolize_keys()","array#symbolize_keys!()","hash#symbolize_keys!()","conductor::condition#test_condition()","conductor::condition#test_meta()","conductor::condition#test_operator()","conductor::condition#test_pandoc()","conductor::condition#test_string()","conductor::condition#test_tree()","conductor::condition#test_truthy()","conductor::condition#test_type()","conductor::condition#test_yaml()","string#time?()","string#to_bool()","string#to_bool!()","string#to_date()","string#to_day()","conductor::env::to_s()","conductor::condition#true?()","string#yaml?()",""],"info":[["Array","","Array.html","",""],["Conductor","","Conductor.html","","<p>Main Conductor class\n"],["Conductor::Command","","Conductor/Command.html","","<p>Command runner\n"],["Conductor::Condition","","Conductor/Condition.html","",""],["Conductor::Config","","Conductor/Config.html","","<p>Configuration methods\n"],["Conductor::Env","","Conductor/Env.html","","<p>Environment variables\n"],["Conductor::Script","","Conductor/Script.html","","<p>Script runner\n"],["FalseClass","","FalseClass.html","","<p>False class\n"],["Hash","","Hash.html","",""],["Object","","Object.html","",""],["String","","String.html","","<p>String helpers\n"],["TrueClass","","TrueClass.html","","<p>True class\n"],["args=","Conductor::Command","Conductor/Command.html#method-i-args-3D","(array)",""],["args=","Conductor::Script","Conductor/Script.html#method-i-args-3D","(array)","<p>Set the args array\n<p>@param array The array\n"],["bool?","FalseClass","FalseClass.html#method-i-bool-3F","()",""],["bool?","String","String.html#method-i-bool-3F","()","<p>Test if a string is a boolean\n<p>@return [Boolean] test result\n"],["bool?","TrueClass","TrueClass.html#method-i-bool-3F","()",""],["bool_to_symbol","String","String.html#method-i-bool_to_symbol","()","<p>Convert a string boolean to symbol\n<p>@return [Symbol] symbolized version\n"],["clean_condition","Object","Object.html#method-i-clean_condition","(condition)","<p>Clean up conditions for output\n<p>@param condition The condition\n"],["conduct","Conductor","Conductor.html#method-c-conduct","(tracks, res = nil, condition = nil)","<p>Main function to parse conditions and\n\n<pre>execute actions. Executes recursively for\nsub-tracks.</pre>\n<p>@param …\n"],["create_config","Conductor","Conductor.html#method-i-create_config","(config_file)",""],["date?","String","String.html#method-i-date-3F","()","<p>Test a string to see if it’s a UTC date\n<p>@return [Boolean] test result\n"],["env","Conductor::Env","Conductor/Env.html#method-c-env","()","<p>Define @env using Marked environment variables\n"],["execute_track","Conductor","Conductor.html#method-c-execute_track","(track)","<p>Execute commands/scripts in the track\n<p>@param track The track\n<p>@return Resulting STDOUT output …\n"],["load_test_env","Conductor::Env","Conductor/Env.html#method-c-load_test_env","()","<p>Loads a test environment.\n"],["meta?","String","String.html#method-i-meta-3F","()","<p>Test if a string starts with MMD metadata\n<p>@return [Boolean] test result\n"],["new","Conductor::Command","Conductor/Command.html#method-c-new","(command)",""],["new","Conductor::Condition","Conductor/Condition.html#method-c-new","(condition)","<p>Initializes the given condition.\n<p>@param condition The condition\n"],["new","Conductor::Config","Conductor/Config.html#method-c-new","()",""],["new","Conductor::Script","Conductor/Script.html#method-c-new","(script)","<p>Initializes the given script.\n<p>@param script The script/path\n"],["number?","String","String.html#method-i-number-3F","()","<p>Test if a string is a number\n<p>@return [Boolean] test result\n"],["operator_to_symbol","Conductor::Condition","Conductor/Condition.html#method-i-operator_to_symbol","(operator)",""],["parse_condition","Conductor::Condition","Conductor/Condition.html#method-i-parse_condition","()",""],["path=","Conductor::Command","Conductor/Command.html#method-i-path-3D","(path)",""],["path=","Conductor::Script","Conductor/Script.html#method-i-path-3D","(path)","<p>Set script path, automatically expands/tests\n<p>@param path The path\n"],["run","Conductor::Command","Conductor/Command.html#method-i-run","()",""],["run","Conductor::Script","Conductor/Script.html#method-i-run","()","<p>Execute the script\n<p>@return [String] script results (STDOUT)\n"],["sample_config","Conductor","Conductor.html#method-i-sample_config","()",""],["split_booleans","Conductor::Condition","Conductor/Condition.html#method-i-split_booleans","(condition)","<p>Splits booleans and tests components.\n<p>@param condition The condition to test\n<p>@return [Boolean] …\n"],["split_condition","Conductor::Condition","Conductor/Condition.html#method-i-split_condition","(condition)","<p>Splits a natural language condition.\n<p>@param condition The condition @return [Array] Value, value …\n"],["stdin","Conductor","Conductor.html#method-c-stdin","()",""],["strip_time","String","String.html#method-i-strip_time","()","<p>Remove time from string\n<p>@return [String] string with time removed\n"],["symbolize_keys","Array","Array.html#method-i-symbolize_keys","()",""],["symbolize_keys","Hash","Hash.html#method-i-symbolize_keys","()",""],["symbolize_keys!","Array","Array.html#method-i-symbolize_keys-21","()",""],["symbolize_keys!","Hash","Hash.html#method-i-symbolize_keys-21","()",""],["test_condition","Conductor::Condition","Conductor/Condition.html#method-i-test_condition","(condition)",""],["test_meta","Conductor::Condition","Conductor/Condition.html#method-i-test_meta","(content, value, key, operator)","<p>Test for MultiMarkdown metadata,\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">optionally</span> <span class=\"ruby-identifier\">key</span> <span class=\"ruby-keyword\">and</span> <span class=\"ruby-identifier\">value</span>\n</pre>\n<p>@param content [String] The text content …\n"],["test_operator","Conductor::Condition","Conductor/Condition.html#method-i-test_operator","(value1, value2, operator)","<p>Test operators\n<p>@param value1 Value @param value2 Value to test @param operator …\n"],["test_pandoc","Conductor::Condition","Conductor/Condition.html#method-i-test_pandoc","(content, operator)",""],["test_string","Conductor::Condition","Conductor/Condition.html#method-i-test_string","(val1, val2, operator)","<p>Compare a string based on operator\n<p>@param val1 The string to test against @param val2 …\n"],["test_tree","Conductor::Condition","Conductor/Condition.html#method-i-test_tree","(origin, value, operator)","<p>Test for the existince of a\n\n<pre>file/directory in the parent tree</pre>\n<p>@param origin Starting directory …\n"],["test_truthy","Conductor::Condition","Conductor/Condition.html#method-i-test_truthy","(value1, value2, operator)","<p>Test “truthiness”\n<p>@param value1 Value to test against @param value2 Value to …\n"],["test_type","Conductor::Condition","Conductor/Condition.html#method-i-test_type","(val1, val2, operator)","<p>Test for type of value\n<p>@param val1 value @param val2 value to test against @param …\n"],["test_yaml","Conductor::Condition","Conductor/Condition.html#method-i-test_yaml","(content, value, key, operator)","<p>Test for presence of yaml, optionall for\n\n<pre>a key, optionally for a key&#39;s value</pre>\n<p>@param content Text …\n"],["time?","String","String.html#method-i-time-3F","()","<p>Test a string to see if it includes a time\n<p>@return [Boolean] test result\n"],["to_bool","String","String.html#method-i-to_bool","()","<p>Returns a bool representation of the string.\n<p>@return [Boolean] Bool representation of the object. …\n"],["to_bool!","String","String.html#method-i-to_bool-21","()","<p>Destructive version of #to_bool\n<p>@see #to_bool\n"],["to_date","String","String.html#method-i-to_date","()","<p>Convert a natural language string to a Date\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">object</span>\n</pre>\n<p>@return [Date] Resulting Date object\n"],["to_day","String","String.html#method-i-to_day","(time = :end)",""],["to_s","Conductor::Env","Conductor/Env.html#method-c-to_s","()","<p>env to string\n<p>@return [String] shell-compatible string representation of @env\n"],["true?","Conductor::Condition","Conductor/Condition.html#method-i-true-3F","()","<p>Tests condition\n<p>@return [Boolean] test result\n"],["yaml?","String","String.html#method-i-yaml-3F","()","<p>Test if string starts with YAML\n<p>@return [Boolean] test result\n"],["README","","README_rdoc.html","","<p>Marked Conductor\n<p>A command line tool that functions as a custom processor handler for Marked 2.\n"]]}}
1
+ var search_data = {"index":{"searchIndex":["array","conductor","command","condition","config","env","script","falseclass","filter","hash","object","string","trueclass","add_comment()","add_mmd()","add_yaml()","append()","args=()","args=()","bool?()","bool?()","bool?()","bool_to_symbol()","clean_condition()","conduct()","create_config()","date?()","delete_meta()","delete_mmd()","delete_yaml()","env()","execute_track()","get_title()","has_comment?()","insert_script()","insert_title()","load_test_env()","meta?()","meta_insert_point()","meta_type()","new()","new()","new()","new()","new()","normalize_filter()","number?()","operator_to_symbol()","parse_condition()","path=()","path=()","process()","replace()","replace_all()","run()","run()","sample_config()","set_meta()","split_booleans()","split_condition()","stdin()","strip_meta()","strip_time()","symbolize_keys()","symbolize_keys()","symbolize_keys!()","symbolize_keys!()","test_condition()","test_meta()","test_operator()","test_pandoc()","test_string()","test_tree()","test_truthy()","test_type()","test_yaml()","time?()","title_from_slug()","titleize()","to_bool()","to_bool!()","to_date()","to_day()","to_pattern()","to_rx()","to_s()","true?()","yaml?()","readme"],"longSearchIndex":["array","conductor","conductor::command","conductor::condition","conductor::config","conductor::env","conductor::script","falseclass","filter","hash","object","string","trueclass","string#add_comment()","string#add_mmd()","string#add_yaml()","string#append()","conductor::command#args=()","conductor::script#args=()","falseclass#bool?()","string#bool?()","trueclass#bool?()","string#bool_to_symbol()","object#clean_condition()","conductor::conduct()","conductor#create_config()","string#date?()","string#delete_meta()","string#delete_mmd()","string#delete_yaml()","conductor::env::env()","conductor::execute_track()","string#get_title()","string#has_comment?()","string#insert_script()","string#insert_title()","conductor::env::load_test_env()","string#meta?()","string#meta_insert_point()","string#meta_type()","conductor::command::new()","conductor::condition::new()","conductor::config::new()","conductor::script::new()","filter::new()","string#normalize_filter()","string#number?()","conductor::condition#operator_to_symbol()","conductor::condition#parse_condition()","conductor::command#path=()","conductor::script#path=()","filter#process()","string#replace()","string#replace_all()","conductor::command#run()","conductor::script#run()","conductor#sample_config()","string#set_meta()","conductor::condition#split_booleans()","conductor::condition#split_condition()","conductor::stdin()","string#strip_meta()","string#strip_time()","array#symbolize_keys()","hash#symbolize_keys()","array#symbolize_keys!()","hash#symbolize_keys!()","conductor::condition#test_condition()","conductor::condition#test_meta()","conductor::condition#test_operator()","conductor::condition#test_pandoc()","conductor::condition#test_string()","conductor::condition#test_tree()","conductor::condition#test_truthy()","conductor::condition#test_type()","conductor::condition#test_yaml()","string#time?()","string#title_from_slug()","string#titleize()","string#to_bool()","string#to_bool!()","string#to_date()","string#to_day()","string#to_pattern()","string#to_rx()","conductor::env::to_s()","conductor::condition#true?()","string#yaml?()",""],"info":[["Array","","Array.html","",""],["Conductor","","Conductor.html","","<p>Main Conductor class\n"],["Conductor::Command","","Conductor/Command.html","","<p>Command runner\n"],["Conductor::Condition","","Conductor/Condition.html","",""],["Conductor::Config","","Conductor/Config.html","","<p>Configuration methods\n"],["Conductor::Env","","Conductor/Env.html","","<p>Environment variables\n"],["Conductor::Script","","Conductor/Script.html","","<p>Script runner\n"],["FalseClass","","FalseClass.html","","<p>False class\n"],["Filter","","Filter.html","","<p>String filtering\n"],["Hash","","Hash.html","",""],["Object","","Object.html","",""],["String","","String.html","","<p>String helpers\n<p>String helpers\n"],["TrueClass","","TrueClass.html","","<p>True class\n"],["add_comment","String","String.html#method-i-add_comment","(key, value)",""],["add_mmd","String","String.html#method-i-add_mmd","(key, value)",""],["add_yaml","String","String.html#method-i-add_yaml","(key, value)",""],["append","String","String.html#method-i-append","(string)",""],["args=","Conductor::Command","Conductor/Command.html#method-i-args-3D","(array)",""],["args=","Conductor::Script","Conductor/Script.html#method-i-args-3D","(array)","<p>Set the args array\n<p>@param array The array\n"],["bool?","FalseClass","FalseClass.html#method-i-bool-3F","()",""],["bool?","String","String.html#method-i-bool-3F","()","<p>Test if a string is a boolean\n<p>@return [Boolean] test result\n"],["bool?","TrueClass","TrueClass.html#method-i-bool-3F","()",""],["bool_to_symbol","String","String.html#method-i-bool_to_symbol","()","<p>Convert a string boolean to symbol\n<p>@return [Symbol] symbolized version\n"],["clean_condition","Object","Object.html#method-i-clean_condition","(condition)","<p>Clean up conditions for output\n<p>@param condition The condition\n"],["conduct","Conductor","Conductor.html#method-c-conduct","(tracks, res = nil, condition = nil)","<p>Main function to parse conditions and\n\n<pre>execute actions. Executes recursively for\nsub-tracks.</pre>\n<p>@param …\n"],["create_config","Conductor","Conductor.html#method-i-create_config","(config_file)",""],["date?","String","String.html#method-i-date-3F","()","<p>Test a string to see if it’s a UTC date\n<p>@return [Boolean] test result\n"],["delete_meta","String","String.html#method-i-delete_meta","(key)",""],["delete_mmd","String","String.html#method-i-delete_mmd","(key)",""],["delete_yaml","String","String.html#method-i-delete_yaml","(key)",""],["env","Conductor::Env","Conductor/Env.html#method-c-env","()","<p>Define @env using Marked environment variables\n"],["execute_track","Conductor","Conductor.html#method-c-execute_track","(track)","<p>Execute commands/scripts in the track\n<p>@param track The track\n<p>@return Resulting STDOUT output …\n"],["get_title","String","String.html#method-i-get_title","()",""],["has_comment?","String","String.html#method-i-has_comment-3F","(key)",""],["insert_script","String","String.html#method-i-insert_script","(path)",""],["insert_title","String","String.html#method-i-insert_title","()",""],["load_test_env","Conductor::Env","Conductor/Env.html#method-c-load_test_env","()","<p>Loads a test environment.\n"],["meta?","String","String.html#method-i-meta-3F","()","<p>Test if a string starts with MMD metadata\n<p>@return [Boolean] test result\n"],["meta_insert_point","String","String.html#method-i-meta_insert_point","()",""],["meta_type","String","String.html#method-i-meta_type","()",""],["new","Conductor::Command","Conductor/Command.html#method-c-new","(command)",""],["new","Conductor::Condition","Conductor/Condition.html#method-c-new","(condition)","<p>Initializes the given condition.\n<p>@param condition The condition\n"],["new","Conductor::Config","Conductor/Config.html#method-c-new","()",""],["new","Conductor::Script","Conductor/Script.html#method-c-new","(script)","<p>Initializes the given script.\n<p>@param script The script/path\n"],["new","Filter","Filter.html#method-c-new","(filter)",""],["normalize_filter","String","String.html#method-i-normalize_filter","()",""],["number?","String","String.html#method-i-number-3F","()","<p>Test if a string is a number\n<p>@return [Boolean] test result\n"],["operator_to_symbol","Conductor::Condition","Conductor/Condition.html#method-i-operator_to_symbol","(operator)",""],["parse_condition","Conductor::Condition","Conductor/Condition.html#method-i-parse_condition","()",""],["path=","Conductor::Command","Conductor/Command.html#method-i-path-3D","(path)",""],["path=","Conductor::Script","Conductor/Script.html#method-i-path-3D","(path)","<p>Set script path, automatically expands/tests\n<p>@param path The path\n"],["process","Filter","Filter.html#method-i-process","()",""],["replace","String","String.html#method-i-replace","(regex, pattern)",""],["replace_all","String","String.html#method-i-replace_all","(regex, pattern)",""],["run","Conductor::Command","Conductor/Command.html#method-i-run","()",""],["run","Conductor::Script","Conductor/Script.html#method-i-run","()","<p>Execute the script\n<p>@return [String] script results (STDOUT)\n"],["sample_config","Conductor","Conductor.html#method-i-sample_config","()",""],["set_meta","String","String.html#method-i-set_meta","(key, value, style: :comment)",""],["split_booleans","Conductor::Condition","Conductor/Condition.html#method-i-split_booleans","(condition)","<p>Splits booleans and tests components.\n<p>@param condition The condition to test\n<p>@return [Boolean] …\n"],["split_condition","Conductor::Condition","Conductor/Condition.html#method-i-split_condition","(condition)","<p>Splits a natural language condition.\n<p>@param condition The condition @return [Array] Value, value …\n"],["stdin","Conductor","Conductor.html#method-c-stdin","()",""],["strip_meta","String","String.html#method-i-strip_meta","()",""],["strip_time","String","String.html#method-i-strip_time","()","<p>Remove time from string\n<p>@return [String] string with time removed\n"],["symbolize_keys","Array","Array.html#method-i-symbolize_keys","()",""],["symbolize_keys","Hash","Hash.html#method-i-symbolize_keys","()",""],["symbolize_keys!","Array","Array.html#method-i-symbolize_keys-21","()",""],["symbolize_keys!","Hash","Hash.html#method-i-symbolize_keys-21","()",""],["test_condition","Conductor::Condition","Conductor/Condition.html#method-i-test_condition","(condition)",""],["test_meta","Conductor::Condition","Conductor/Condition.html#method-i-test_meta","(content, value, key, operator)","<p>Test for MultiMarkdown metadata,\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">optionally</span> <span class=\"ruby-identifier\">key</span> <span class=\"ruby-keyword\">and</span> <span class=\"ruby-identifier\">value</span>\n</pre>\n<p>@param content [String] The text content …\n"],["test_operator","Conductor::Condition","Conductor/Condition.html#method-i-test_operator","(value1, value2, operator)","<p>Test operators\n<p>@param value1 Value @param value2 Value to test @param operator …\n"],["test_pandoc","Conductor::Condition","Conductor/Condition.html#method-i-test_pandoc","(content, operator)",""],["test_string","Conductor::Condition","Conductor/Condition.html#method-i-test_string","(val1, val2, operator)","<p>Compare a string based on operator\n<p>@param val1 The string to test against @param val2 …\n"],["test_tree","Conductor::Condition","Conductor/Condition.html#method-i-test_tree","(origin, value, operator)","<p>Test for the existince of a\n\n<pre>file/directory in the parent tree</pre>\n<p>@param origin Starting directory …\n"],["test_truthy","Conductor::Condition","Conductor/Condition.html#method-i-test_truthy","(value1, value2, operator)","<p>Test “truthiness”\n<p>@param value1 Value to test against @param value2 Value to …\n"],["test_type","Conductor::Condition","Conductor/Condition.html#method-i-test_type","(val1, val2, operator)","<p>Test for type of value\n<p>@param val1 value @param val2 value to test against @param …\n"],["test_yaml","Conductor::Condition","Conductor/Condition.html#method-i-test_yaml","(content, value, key, operator)","<p>Test for presence of yaml, optionall for\n\n<pre>a key, optionally for a key&#39;s value</pre>\n<p>@param content Text …\n"],["time?","String","String.html#method-i-time-3F","()","<p>Test a string to see if it includes a time\n<p>@return [Boolean] test result\n"],["title_from_slug","String","String.html#method-i-title_from_slug","()",""],["titleize","String","String.html#method-i-titleize","()","<p>Titlecase a string\n<p>@return Titleized string\n"],["to_bool","String","String.html#method-i-to_bool","()","<p>Returns a bool representation of the string.\n<p>@return [Boolean] Bool representation of the object. …\n"],["to_bool!","String","String.html#method-i-to_bool-21","()","<p>Destructive version of #to_bool\n<p>@see #to_bool\n"],["to_date","String","String.html#method-i-to_date","()","<p>Convert a natural language string to a Date\n\n<pre class=\"ruby\"><span class=\"ruby-identifier\">object</span>\n</pre>\n<p>@return [Date] Resulting Date object\n"],["to_day","String","String.html#method-i-to_day","(time = :end)",""],["to_pattern","String","String.html#method-i-to_pattern","()",""],["to_rx","String","String.html#method-i-to_rx","()",""],["to_s","Conductor::Env","Conductor/Env.html#method-c-to_s","()","<p>env to string\n<p>@return [String] shell-compatible string representation of @env\n"],["true?","Conductor::Condition","Conductor/Condition.html#method-i-true-3F","()","<p>Tests condition\n<p>@return [Boolean] test result\n"],["yaml?","String","String.html#method-i-yaml-3F","()","<p>Test if string starts with YAML\n<p>@return [Boolean] test result\n"],["README","","README_rdoc.html","","<p>Marked Conductor\n<p>A command line tool that functions as a custom processor handler for Marked 2.\n"]]}}
Binary file
@@ -62,6 +62,9 @@
62
62
  <li class="class">
63
63
  <a href="FalseClass.html">FalseClass</a>
64
64
  </li>
65
+ <li class="class">
66
+ <a href="Filter.html">Filter</a>
67
+ </li>
65
68
  <li class="class">
66
69
  <a href="Hash.html">Hash</a>
67
70
  </li>
@@ -99,11 +102,6 @@
99
102
  &mdash;
100
103
  <span class="container">Conductor::Env</span>
101
104
 
102
- <li class="method">
103
- <a href="Conductor/Script.html#method-c-new">::new</a>
104
- &mdash;
105
- <span class="container">Conductor::Script</span>
106
-
107
105
  <li class="method">
108
106
  <a href="Conductor/Config.html#method-c-new">::new</a>
109
107
  &mdash;
@@ -119,6 +117,16 @@
119
117
  &mdash;
120
118
  <span class="container">Conductor::Condition</span>
121
119
 
120
+ <li class="method">
121
+ <a href="Conductor/Script.html#method-c-new">::new</a>
122
+ &mdash;
123
+ <span class="container">Conductor::Script</span>
124
+
125
+ <li class="method">
126
+ <a href="Filter.html#method-c-new">::new</a>
127
+ &mdash;
128
+ <span class="container">Filter</span>
129
+
122
130
  <li class="method">
123
131
  <a href="Conductor.html#method-c-stdin">::stdin</a>
124
132
  &mdash;
@@ -130,15 +138,35 @@
130
138
  <span class="container">Conductor::Env</span>
131
139
 
132
140
  <li class="method">
133
- <a href="Conductor/Command.html#method-i-args-3D">#args=</a>
141
+ <a href="String.html#method-i-add_comment">#add_comment</a>
134
142
  &mdash;
135
- <span class="container">Conductor::Command</span>
143
+ <span class="container">String</span>
144
+
145
+ <li class="method">
146
+ <a href="String.html#method-i-add_mmd">#add_mmd</a>
147
+ &mdash;
148
+ <span class="container">String</span>
149
+
150
+ <li class="method">
151
+ <a href="String.html#method-i-add_yaml">#add_yaml</a>
152
+ &mdash;
153
+ <span class="container">String</span>
154
+
155
+ <li class="method">
156
+ <a href="String.html#method-i-append">#append</a>
157
+ &mdash;
158
+ <span class="container">String</span>
136
159
 
137
160
  <li class="method">
138
161
  <a href="Conductor/Script.html#method-i-args-3D">#args=</a>
139
162
  &mdash;
140
163
  <span class="container">Conductor::Script</span>
141
164
 
165
+ <li class="method">
166
+ <a href="Conductor/Command.html#method-i-args-3D">#args=</a>
167
+ &mdash;
168
+ <span class="container">Conductor::Command</span>
169
+
142
170
  <li class="method">
143
171
  <a href="String.html#method-i-bool-3F">#bool?</a>
144
172
  &mdash;
@@ -174,11 +202,61 @@
174
202
  &mdash;
175
203
  <span class="container">String</span>
176
204
 
205
+ <li class="method">
206
+ <a href="String.html#method-i-delete_meta">#delete_meta</a>
207
+ &mdash;
208
+ <span class="container">String</span>
209
+
210
+ <li class="method">
211
+ <a href="String.html#method-i-delete_mmd">#delete_mmd</a>
212
+ &mdash;
213
+ <span class="container">String</span>
214
+
215
+ <li class="method">
216
+ <a href="String.html#method-i-delete_yaml">#delete_yaml</a>
217
+ &mdash;
218
+ <span class="container">String</span>
219
+
220
+ <li class="method">
221
+ <a href="String.html#method-i-get_title">#get_title</a>
222
+ &mdash;
223
+ <span class="container">String</span>
224
+
225
+ <li class="method">
226
+ <a href="String.html#method-i-has_comment-3F">#has_comment?</a>
227
+ &mdash;
228
+ <span class="container">String</span>
229
+
230
+ <li class="method">
231
+ <a href="String.html#method-i-insert_script">#insert_script</a>
232
+ &mdash;
233
+ <span class="container">String</span>
234
+
235
+ <li class="method">
236
+ <a href="String.html#method-i-insert_title">#insert_title</a>
237
+ &mdash;
238
+ <span class="container">String</span>
239
+
177
240
  <li class="method">
178
241
  <a href="String.html#method-i-meta-3F">#meta?</a>
179
242
  &mdash;
180
243
  <span class="container">String</span>
181
244
 
245
+ <li class="method">
246
+ <a href="String.html#method-i-meta_insert_point">#meta_insert_point</a>
247
+ &mdash;
248
+ <span class="container">String</span>
249
+
250
+ <li class="method">
251
+ <a href="String.html#method-i-meta_type">#meta_type</a>
252
+ &mdash;
253
+ <span class="container">String</span>
254
+
255
+ <li class="method">
256
+ <a href="String.html#method-i-normalize_filter">#normalize_filter</a>
257
+ &mdash;
258
+ <span class="container">String</span>
259
+
182
260
  <li class="method">
183
261
  <a href="String.html#method-i-number-3F">#number?</a>
184
262
  &mdash;
@@ -205,20 +283,40 @@
205
283
  <span class="container">Conductor::Script</span>
206
284
 
207
285
  <li class="method">
208
- <a href="Conductor/Script.html#method-i-run">#run</a>
286
+ <a href="Filter.html#method-i-process">#process</a>
209
287
  &mdash;
210
- <span class="container">Conductor::Script</span>
288
+ <span class="container">Filter</span>
289
+
290
+ <li class="method">
291
+ <a href="String.html#method-i-replace">#replace</a>
292
+ &mdash;
293
+ <span class="container">String</span>
294
+
295
+ <li class="method">
296
+ <a href="String.html#method-i-replace_all">#replace_all</a>
297
+ &mdash;
298
+ <span class="container">String</span>
211
299
 
212
300
  <li class="method">
213
301
  <a href="Conductor/Command.html#method-i-run">#run</a>
214
302
  &mdash;
215
303
  <span class="container">Conductor::Command</span>
216
304
 
305
+ <li class="method">
306
+ <a href="Conductor/Script.html#method-i-run">#run</a>
307
+ &mdash;
308
+ <span class="container">Conductor::Script</span>
309
+
217
310
  <li class="method">
218
311
  <a href="Conductor.html#method-i-sample_config">#sample_config</a>
219
312
  &mdash;
220
313
  <span class="container">Conductor</span>
221
314
 
315
+ <li class="method">
316
+ <a href="String.html#method-i-set_meta">#set_meta</a>
317
+ &mdash;
318
+ <span class="container">String</span>
319
+
222
320
  <li class="method">
223
321
  <a href="Conductor/Condition.html#method-i-split_booleans">#split_booleans</a>
224
322
  &mdash;
@@ -229,6 +327,11 @@
229
327
  &mdash;
230
328
  <span class="container">Conductor::Condition</span>
231
329
 
330
+ <li class="method">
331
+ <a href="String.html#method-i-strip_meta">#strip_meta</a>
332
+ &mdash;
333
+ <span class="container">String</span>
334
+
232
335
  <li class="method">
233
336
  <a href="String.html#method-i-strip_time">#strip_time</a>
234
337
  &mdash;
@@ -304,6 +407,16 @@
304
407
  &mdash;
305
408
  <span class="container">String</span>
306
409
 
410
+ <li class="method">
411
+ <a href="String.html#method-i-title_from_slug">#title_from_slug</a>
412
+ &mdash;
413
+ <span class="container">String</span>
414
+
415
+ <li class="method">
416
+ <a href="String.html#method-i-titleize">#titleize</a>
417
+ &mdash;
418
+ <span class="container">String</span>
419
+
307
420
  <li class="method">
308
421
  <a href="String.html#method-i-to_bool">#to_bool</a>
309
422
  &mdash;
@@ -324,6 +437,16 @@
324
437
  &mdash;
325
438
  <span class="container">String</span>
326
439
 
440
+ <li class="method">
441
+ <a href="String.html#method-i-to_pattern">#to_pattern</a>
442
+ &mdash;
443
+ <span class="container">String</span>
444
+
445
+ <li class="method">
446
+ <a href="String.html#method-i-to_rx">#to_rx</a>
447
+ &mdash;
448
+ <span class="container">String</span>
449
+
327
450
  <li class="method">
328
451
  <a href="Conductor/Condition.html#method-i-true-3F">#true?</a>
329
452
  &mdash;
@@ -0,0 +1,272 @@
1
+ # frozen_string_literal: true
2
+
3
+ # String helpers
4
+ class ::String
5
+ def normalize_filter
6
+ parts = match(/(?<filter>[\w_]+)(?:\((?<paren>.*?)\))?$/i)
7
+ filter = parts["filter"].downcase.gsub(/_/, "")
8
+ params = parts["paren"]&.split(/ *, */)
9
+ [filter, params]
10
+ end
11
+
12
+ def meta_type
13
+ lines = split(/\n/)
14
+ case lines[0]
15
+ when /^--- *$/
16
+ :yaml
17
+ when /^ *[ \w]+: +\S+/
18
+ :mmd
19
+ else
20
+ :none
21
+ end
22
+ end
23
+
24
+ def meta_insert_point
25
+ insert_point = 0
26
+
27
+ case meta_type
28
+ when :yaml
29
+ lines = split(/\n/)
30
+ lines.shift
31
+ lines.each_with_index do |line, idx|
32
+ next unless line =~ /^(...|---) *$/
33
+
34
+ insert_point = idx + 1
35
+ break
36
+ end
37
+ when :mmd
38
+ lines = split(/\n/)
39
+ lines.each_with_index do |line, idx|
40
+ next if line =~ /^ *[ \w]+: +\S+/
41
+
42
+ insert_point = idx
43
+ break
44
+ end
45
+ end
46
+
47
+ insert_point
48
+ end
49
+
50
+ def append(string)
51
+ "#{self}\n#{string}"
52
+ end
53
+
54
+ def insert_script(path)
55
+ path.strip!
56
+ path = "#{path}.js" unless path =~ /\.js$/
57
+
58
+ if path =~ %r{^[~/]}
59
+ path = File.expand_path(path)
60
+ else
61
+ new_path = if File.directory?(File.expand_path("~/.config/conductor/javascript"))
62
+ File.expand_path("~/.config/conductor/javascript/#{path}")
63
+ elsif File.directory?(File.expand_path("~/.config/conductor/javascripts"))
64
+ File.expand_path("~/.config/conductor/javascripts/#{path}")
65
+ else
66
+ File.expand_path("~/.config/conductor/scripts/#{path}")
67
+ end
68
+
69
+ path = new_path if File.exist?(new_path)
70
+ end
71
+
72
+ %(#{self}\n<script type="javascript" src="#{path}"></script>\n)
73
+ end
74
+
75
+ def title_from_slug
76
+ filename = File.basename(Conductor::Env.env[:filepath]).sub(/\.[a-z]+$/i, "")
77
+ filename.sub!(/-?\d{4}-\d{2}-\d{2}-?/, "")
78
+ filename.sub!(/\bdot\b/, ".")
79
+ filename.sub!(/ dash /, "-")
80
+ filename
81
+ end
82
+
83
+ def get_title
84
+ title = nil
85
+
86
+ case meta_type
87
+ when :yaml
88
+ m = match(/^---.*?\n(---|\.\.\.)/m)
89
+ yaml = YAML.load(m[0])
90
+ title = yaml["title"]
91
+ when :mmd
92
+ split(/\n/).each do |line|
93
+ if line =~ /^ *title: *(\S.*?)$/i
94
+ title = Regexp.last_match(1)
95
+ break
96
+ end
97
+ end
98
+ else
99
+ m = match(/title: (.*?)$/i)
100
+ title = m ? m[0] : nil
101
+ end
102
+
103
+ title ||= title_from_slug.titleize
104
+
105
+ title
106
+ end
107
+
108
+ def insert_title
109
+ title = get_title
110
+ lines = split(/\n/)
111
+ insert_point = meta_insert_point
112
+ insert_at = insert_point.positive? ? insert_point + 1 : 0
113
+ lines.insert(insert_at, "# #{title}\n")
114
+ lines.join("\n")
115
+ end
116
+
117
+ def set_meta(key, value, style: :comment)
118
+ case style
119
+ when :yaml
120
+ add_yaml(key, value)
121
+ when :mmd
122
+ add_mmd(key, value)
123
+ else # comment or none
124
+ add_comment(key, value)
125
+ end
126
+ end
127
+
128
+ def add_yaml(key, value)
129
+ sub(/^---.*?\n(---|\.\.\.)/m) do
130
+ m = Regexp.last_match
131
+ yaml = YAML.load(m[0])
132
+ yaml[key] = value
133
+ "#{YAML.dump(yaml)}\n---\n"
134
+ end
135
+ end
136
+
137
+ def delete_yaml(key)
138
+ sub(/^---.*?\n(---|\.\.\.)/m) do
139
+ m = Regexp.last_match
140
+ yaml = YAML.load(m[0])
141
+ yaml.delete(key)
142
+ "#{YAML.dump(yaml)}\n---\n"
143
+ end
144
+ end
145
+
146
+ def add_mmd(key, value)
147
+ if match(/(\A|\n) *#{key}: *\S+/i)
148
+ sub(/^ *#{key}:.*?\n/i, "#{key}: #{value}\n")
149
+ else
150
+ lines = split(/\n/)
151
+ lines.insert(meta_insert_point, "#{key}: #{value}")
152
+ lines.join("\n")
153
+ end
154
+ end
155
+
156
+ def delete_mmd(key)
157
+ sub(/^ *#{key}:.*?\n/i, "")
158
+ end
159
+
160
+ def has_comment?(key)
161
+ match(/^<!--.*?#{key}: \S.*?-->/m)
162
+ end
163
+
164
+ def add_comment(key, value)
165
+ if has_comment?(key)
166
+ sub(/ *#{key}: .*?$/, "#{key}: #{value}")
167
+ else
168
+ lines = split(/\n/)
169
+ lines.insert(meta_insert_point, "<!--\n#{key}: #{value}\n-->")
170
+ lines.join("\n")
171
+ end
172
+ end
173
+
174
+ def delete_meta(key)
175
+ case meta_type
176
+ when :yaml
177
+ delete_yaml(key)
178
+ when :mmd
179
+ delete_mmd(key)
180
+ end
181
+ end
182
+
183
+ def strip_meta
184
+ case meta_type
185
+ when :yaml
186
+ sub(/^---.*?(---|...)/m, "")
187
+ when :mmd
188
+ lines = split(/\n/)
189
+ lines[meta_insert_point..]
190
+ end
191
+ end
192
+
193
+ def replace_all(regex, pattern)
194
+ gsub(regex.to_rx, pattern.to_pattern)
195
+ end
196
+
197
+ def replace(regex, pattern)
198
+ sub(regex.to_rx, pattern.to_pattern)
199
+ end
200
+
201
+ def to_rx
202
+ if self =~ %r{^/(.*?)/([im]+)?$}
203
+ m = Regexp.last_match
204
+ regex = m[1]
205
+ flags = m[2]
206
+ Regexp.new(regex, flags)
207
+ else
208
+ Regexp.new(Regexp.escape(self))
209
+ end
210
+ end
211
+
212
+ def to_pattern
213
+ gsub(/\$(\d+)/, '\\\\\1').gsub(/(^["']|["']$)/, "")
214
+ end
215
+ end
216
+
217
+ # String filtering
218
+ class Filter < String
219
+ attr_reader :filter, :params
220
+
221
+ def initialize(filter)
222
+ @filter, @params = filter.normalize_filter
223
+ super
224
+ end
225
+
226
+ def process
227
+ content = Conductor.stdin
228
+
229
+ case @filter
230
+ when /(insert|add|inject)title/
231
+ content.insert_title
232
+ when /(insert|add|inject)script/
233
+ content = content.append("\n\n<div>")
234
+ @params.each do |script|
235
+ content = content.insert_script(script)
236
+ end
237
+ "#{content}</div>"
238
+ when /(add|set)meta/
239
+ unless @params.count == 2
240
+ warn "Invalid filter parameters: #{@filter}(#{@params.join(",")})"
241
+ return content
242
+ end
243
+
244
+ # needs to test for existing meta, setting key if exists, adding if not
245
+ # should recognize yaml and mmd
246
+ content.set_meta(@params[0], @params[1], style: content.meta_type)
247
+ when /(strip|remove)meta/
248
+ if @params
249
+ content.delete_meta(@params[0])
250
+ else
251
+ content.strip_meta
252
+ end
253
+ when /setstyle/
254
+ # Should check for existing style first
255
+ content.set_meta("marked style", @params[0], style: :comment)
256
+ when /replaceall/
257
+ unless @params.count == 2
258
+ warn "Invalid filter parameters: #{@filter}(#{@params.join(",")})"
259
+ return content
260
+ end
261
+
262
+ content.replace_all(@params[0], @params[1])
263
+ when /replace$/
264
+ unless @params.count == 2
265
+ warn "Invalid filter parameters: #{@filter}(#{@params.join(",")})"
266
+ return content
267
+ end
268
+
269
+ content.replace(@params[0], @params[1])
270
+ end
271
+ end
272
+ end
@@ -2,6 +2,15 @@
2
2
 
3
3
  # String helpers
4
4
  class ::String
5
+ ##
6
+ ## Titlecase a string
7
+ ##
8
+ ## @return Titleized string
9
+ ##
10
+ def titleize
11
+ split(/(\W)/).map(&:capitalize).join
12
+ end
13
+
5
14
  ##
6
15
  ## Convert a string boolean to symbol
7
16
  ##
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Conductor
4
- VERSION = '1.0.12'
4
+ VERSION = '1.0.14'
5
5
  end
data/lib/conductor.rb CHANGED
@@ -14,6 +14,7 @@ require_relative "conductor/hash"
14
14
  require_relative "conductor/array"
15
15
  require_relative "conductor/boolean"
16
16
  require_relative "conductor/string"
17
+ require_relative "conductor/filter"
17
18
  require_relative "conductor/script"
18
19
  require_relative "conductor/command"
19
20
  require_relative "conductor/condition"