Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Functions to access to the Sc3 Rtf & Html based help systems.
Synopsis
- sc3_rtf_help_dir :: IO FilePath
- sc3_rtf_find_file :: FilePath -> IO (Maybe FilePath)
- sc3_rtf_find_file_err :: FilePath -> IO FilePath
- sc3_rtf_to_scd :: FilePath -> FilePath -> IO ()
- sc3_rtf_help_translate :: String -> IO FilePath
- sc3_rtf_help_scd_open :: (String, [String]) -> String -> IO ()
- sc3_rtf_help_scd_open_emacs :: String -> IO ()
- sc3_scdoc_help_url :: String
- sc3_scdoc_help_dir :: IO String
- sc3_scdoc_help_class :: String -> String
- sc3_scdoc_help_operator :: String -> FilePath
- sc3_scdoc_help_method :: Char -> (String, String) -> FilePath
- sc3_scdoc_help_class_method :: (String, String) -> FilePath
- sc3_scdoc_help_instance_method :: (String, String) -> FilePath
- sc3_scdoc_help_path :: String -> String
- sc3_scdoc_help_open :: Bool -> String -> IO ()
- sc3_scdoc_help_server_command_path :: String -> FilePath
- sc3_scdoc_help_server_command_open :: Bool -> String -> IO ()
- on_lines_of :: ([String] -> [[String]]) -> String -> [String]
- split_multiple_fragments :: [String] -> [[String]]
- drop_post_graph_section :: [String] -> [String]
- is_md_help :: String -> Bool
- data CodeBlockType
- md_help_get_code_blocks :: [String] -> [(CodeBlockType, [String])]
- is_doctest_block :: [String] -> Bool
- md_help_get_tab_indented_code_blocks :: [String] -> [[String]]
- md_help_get_fenced_code_blocks :: [String] -> [[String]]
- get_help_file_fragments :: String -> [String]
- read_file_fragments :: FilePath -> IO [String]
- read_file_set_fragments :: [FilePath] -> IO [String]
Rtf
sc3_rtf_help_dir :: IO FilePath Source #
Directory containing Sc3 Rtf help files.
sc3_rtf_find_file :: FilePath -> IO (Maybe FilePath) Source #
Find (case-insensitively) indicated file at sc3_rtf_help_dir
.
Runs the command "find -name" (so Unix only).
sc3_rtf_find_file "SinOsc.help.rtf" sc3_rtf_find_file "lfsaw.help.rtf" sc3_rtf_find_file "softClip.rtf"
sc3_rtf_to_scd :: FilePath -> FilePath -> IO () Source #
Run the command unrtf (so UNIX only) to convert an RTF file to a TEXT (.scd) file.
sc3_rtf_help_translate :: String -> IO FilePath Source #
sc3_rtf_to_scd
of sc3_rtf_find_file_err
, writing output to TMPDIR
sc3_rtf_help_scd_open :: (String, [String]) -> String -> IO () Source #
sc3_rtf_help_translate
and run editor.
sc3_rtf_help_scd_open_emacs :: String -> IO () Source #
sc3_rtf_help_scd_open
with emacsclient --no-wait.
sc3_rtf_help_scd_open_emacs "lfsaw"
Sc-Doc (Html)
sc3_scdoc_help_url :: String Source #
Url for online Sc-Doc SuperCollider documentation.
sc3_scdoc_help_dir :: IO String Source #
Read the environment variable Sc3_ScDoc_Html_Help_Dir
.
The default value is ~/.local/share/SuperCollider/Help
.
sc3_scdoc_help_class :: String -> String Source #
Path to indicated Sc3 class help file.
>>>
sc3_scdoc_help_class "SinOsc"
"Classes/SinOsc.html"
sc3_scdoc_help_operator :: String -> FilePath Source #
Generate path to indicated Sc3 operator help file.
>>>
sc3_scdoc_help_operator "+"
"Overviews/Operators.html#+"
sc3_scdoc_help_method :: Char -> (String, String) -> FilePath Source #
Generate path to indicated Sc3 method help.
>>>
sc3_scdoc_help_method '*' ("C","m")
"Classes/C.html#*m"
sc3_scdoc_help_class_method :: (String, String) -> FilePath Source #
Generate path to indicated Sc3 class method help.
>>>
sc3_scdoc_help_class_method ("C","m")
"Classes/C.html#*m"
sc3_scdoc_help_instance_method :: (String, String) -> FilePath Source #
Generate path to indicated Sc3 instance method help.
>>>
sc3_scdoc_help_instance_method ("C","m")
"Classes/C.html#-m"
sc3_scdoc_help_path :: String -> String Source #
Sc3 help path documenting x.
>>>
sc3_scdoc_help_path "Operator.distort"
"Overviews/Operators.html#distort"
>>>
sc3_scdoc_help_path "Collection.*fill"
"Classes/Collection.html#*fill"
>>>
sc3_scdoc_help_path "Collection.inject"
"Classes/Collection.html#-inject"
>>>
sc3_scdoc_help_path "SinOsc"
"Classes/SinOsc.html"
sc3_scdoc_help_open :: Bool -> String -> IO () Source #
Open Sc3 help path, either the local file or the online version.
Use BROWSER
or x-www-browser
.
Base.System.get_env_default "BROWSER" "x-www-browser"
sc3_scdoc_help_open True (sc3_scdoc_help_path "SinOsc") sc3_scdoc_help_open True (sc3_scdoc_help_path "Collection.*fill") sc3_scdoc_help_open False (sc3_scdoc_help_path "Collection.inject")
sc3_scdoc_help_server_command_path :: String -> FilePath Source #
Generate path to indicated Sc3 instance method help. Adds initial forward slash if not present.
let r = "Reference/Server-Command-Reference.html#/b_alloc" sc3_scdoc_help_server_command_path "b_alloc" == r
sc3_scdoc_help_server_command_open :: Bool -> String -> IO () Source #
sc3_scdoc_help_open
of sc3_server_command_path
sc3_scdoc_help_server_command_open True "s_new" sc3_scdoc_help_server_command_open False "/b_allocRead"
Fragments
on_lines_of :: ([String] -> [[String]]) -> String -> [String] Source #
Apply function at lines of string.
split_multiple_fragments :: [String] -> [[String]] Source #
Split text into fragments at empty lines. Hsc3 (and related projects) write help files as sets of distinct fragments. Fragments are separated by empty lines. A line containing the special character sequence ---- indicates the end of the fragments.
>>>
on_lines_of split_multiple_fragments ";a\nb\n\n\n;c\nd"
[";a\nb\n",";c\nd\n"]
drop_post_graph_section :: [String] -> [String] Source #
The text '----' appearing anywhere in a line indicates the end of the graph fragments. The text '# ' appearing at the start of a line also indicates the end of the graph fragments.
>>>
drop_post_graph_section ["a","b","c","","----d","e","f"]
["a","b","c",""]
>>>
drop_post_graph_section ["a","b","c","","----d","# e","","f"]
["a","b","c",""]
is_md_help :: String -> Bool Source #
Some help files are in Markdown format.
These are recognised by examing the first two characters, which must be a #
and ' '.
data CodeBlockType Source #
There are two code block formats in markdown help files. The first indents the block using a single tab or four spaces. The second marks the start and end of the block by lines starting with three back ticks (`).
See: https://spec.commonmark.org/0.30/#indented-code-blocks and https://spec.commonmark.org/0.30/#fenced-code-blocks
Instances
md_help_get_code_blocks :: [String] -> [(CodeBlockType, [String])] Source #
Get code blocks from Markdown help file.
is_doctest_block :: [String] -> Bool Source #
md_help_get_tab_indented_code_blocks :: [String] -> [[String]] Source #
md_help_get_fenced_code_blocks :: [String] -> [[String]] Source #
Get indented code blocks from Markdown help file.
>>>
s <- readFile "/home/rohan/sw/spl/Help/Reference/AllpassC.help.sl"
>>>
is_md_help s
True
>>>
let b = md_help_get_fenced_code_blocks (lines s)
>>>
length b
3
get_help_file_fragments :: String -> [String] Source #