Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Parser Error Info: C tokenizer exited with BAD_ROUTE. #152

Closed
groceryheist opened this issue May 29, 2016 · 3 comments
Closed

Parser Error Info: C tokenizer exited with BAD_ROUTE. #152

groceryheist opened this issue May 29, 2016 · 3 comments

Comments

@groceryheist
Copy link

bugtext.txt

@jayvdb
Copy link
Contributor

jayvdb commented Jul 23, 2016

The contents of the attached text file are

Text('[[Image:HousingAuthority-HousingAuthority.jpg|thumb|right|300px|An example of a configuration created using HousingAuthority]]\n\n\'\'\'HousingAuthority\'\'\' is a library used to make easy configurations that go into OptionHouse.\n\n==Table data==\n===frameData===\n;Fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| frame || frame || frame || Frame you want all of the HA widgets to go onto, if no frame is passed then a blank unnamed one is created.\n|-\n| columns || number || 1 || Display style, 1 is a one by one style, 2 will be 2 widgets per a row and so on\n|-\n| handler || table || nil || Handler for all callbacks to use, all callbacks require set/onSet/get to be passed as a string if this is set.\n|-\n| set || function/string || nil || The set callback that all widgets inherit\n|-\n| onSet || function/string || nil || The onSet callback that all widgets inherit\n|-\n| get || function/string || nil || The get callback that all widgets inherit\n|}\n;Remarks\nYou only need to pass the frame if you\'re doing some sort of custom modification to it, otherwise you can just skip it and it\'ll handle everything.\n\nIf you do pass a frame, do not rely on it being the one you should register with OptionHouse if your widgets are going to overlap off the OptionHouse display frame we wrap it a scroll frame around it.\n\n===widgetData===\nAll HousingAuthority widgets (input, color, dropdown, slider, checkbox, button) accept these by default as fields so aren\'t listed.\n\n;Fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| text || string || <required> || Text shown next to the widget\n|-\n| group || string || nil || Used for grouping widgets together\n|-\n| var || string/number/table || <required> || Used for identifying widgets, passed for all set/onSet/get/validate functions\n|-\n| help || string || nil || Shows a little "[?]" next to each widget in green, handy if you need to clarify or give extra information that can\'t be explained in the text alone.\n|-\n| handler || table || nil || Handler function for using in the callbacks require set/onSet/get to be passed as a string if this is set.\n|-\n| set || function/string || <required> || Function called when a widgets configuration value changes\n|-\n| onSet || function/string || nil || Same as set, however you should only use this if you need to know when something changes not changing the configuration\n|-\n| get || function/string || <required> || Called when we\'re loading the widget and when the frame is shown, the actual value of the widget\n|-\n| order || integer || 999999 || Order to display the widgets in\n|}\n\n;Remarks\n\'\'\'Grouping\'\'\'\n\nGrouping is a way to break up configuration so it doesn\'t look like a single mass of options, if one widget has the group field passed all of them must, the value should be the text that you want displayed, for example the below will show an input and color widget inside a frame labeled "Frame" and a check inside a frame labeled "General".\n\n { { type = "input",\n     group = "Frame",\n     <input data>\n   }\n   { type = "color",\n     group = "Frame",\n     <input data>\n   }\n   { type = "check",\n     group = "General",\n     <input data>\n   } }\n\n\'\'\'Callbacks\'\'\'\nThese are how the callback functions are handled along with arguments used.\n\n\'\'No handlers passed\'\'\n\nset(var, value)\nonSet(var, value)\nvalidate(var, value)\nget(var)\n\n\'\'Handler passed\'\'\n\nhandler[set](handler, var, value)\nhandler[onSet](handler, var, value)\nhandler[validate](handler, var, value)\nhandler[get](handler, var)\n\n==HousingAuthority API==\n===HA:RegisterFrame([frameData])===\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| HAObj || table || HousingAuthority data object for registering widgets\n|}\n\n===HA:CreateConfiguration(widgets[, frameData])===\n;Args\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| widgets || table || List of all the widgets you want to add\n|-\n| frameData || table || Frame data \n|}\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| frame || frame || Frame that should be registered with OptionHouse, this is just the results of [[#HAObj:GetFrame.28.29|HAObj:GetFrame()]]\n|}\n\n;Types\nList of widget types that can be used\n\n{| class="darktable"\n|-\n! Type !! Called Function\n|-\n| group || [[#HAObj:CreateGroup.28data.29|HAObj:CreateGroup()]]\n|-\n| input || [[#HAObj:CreateInput.28data.29|HAObj:CreateInput()]]\n|-\n| dropdown || [[#HAObj:CreateDropdown.28data.29|HAObj:CreateDropdown()]]\n|-\n| color || [[#HAObj:CreateColorPicker.28data.29|HAObj:CreateColorPicker()]]\n|-\n| check || [[#HAObj:CreateCheckBox.28data.29|HAObj:CreateCheckBox()]]\n|-\n| button || [[#HAObj:CreateButton.28data.29|HAObj:CreateButton()]]\n|-\n| slider || [[#HAObj:CreateSlider.28data.29|HAObj:CreateSlider()]]\n|-\n| label || [[#HAObj:CreateLabel.28data.29|HAObj:CreateLabel()]]\n|}\n\n;Remarks\nMost of the time, all you want is to call this and just pass the table with all the configuratiions, if you need more flexability you can use the below HAObject API\'s.\n\nTables should look like this,\n\n { { type = "input",\n     <input data arguments>\n   },\n   { type = "dropdown",\n     <dropdown data arguments>\n   },\n }\n\nand so on.\n\n==HousingAuthority Object API==\n===HAObj:GetFrame()===\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| frame || Frame/ScrollFrame || Frame with all the widgets displayed in it, that should be registered with OptionHouse\n|}\n\n;Remarks\nOnce you call this, you can no longer call any of the widget creation functions, if the total height of all the widgets is creater then 280 then we wrap the passed frame around a ScrollFrame and return the ScrollFrame instead.\n\n===HAObj:GetObject(frame)===\nReturns the HAObj that created the frame that was passed in.\n\n;Args\n{| class="darktable"\n|-\n! Name !! Type !! Details\n|-\n| Frame || frame || HA display frame thats given when calling [[#HAObj:GetFrame.28.29|HAObj:GetFrame()]]\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| HAObj || table || Useful if you want to update a dropdown thats already beeen created, but you created it using [[#HA:CreateConfiguration.28widgets.5B.2C_frameData.5D.29|HAObj:CreateConfiguratiion()]\n|}\n\n===HAObj:CreateGroup(data)===\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| background || table || rgb of 0.094117 || Backdrop color of the group, by default this is a blackish gray\n|-\n| border || table || rgb of 0.4 | Backdrop border color of the group, by default this is gray\n|}\n\n;Remarks\nThis is a way to configure how your group frames will look, not required if you\'re using grouping due to the defaults, you should pass the tables formatted as { r = #, g = #, b = # } for both background and border.\n\n===HAObj:CreateDropdown(data)===\nDropdown for selecting a list of options, useful when you don\'t want them to be able to enter anytihng like in an input \n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| text || string || <required> || Actual text to display\n|-\n| default || string/number || nil || Default value to select by key, if the default doesn\'t match the list we use the first row\n|-\n| list || table || <required> || List of rows to shown, must be formatted as { { "key1"", "text1" }, { "key2", "text2" } } and so on\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| dropdownFrame || Frame\n|}\n\n===HAObj:UpdateDropdown(data)===\nAllows you to update an already created dropdown with a new default and list\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| var || table/string/number || <required> || Used for identifying the droopdown to be updated\n|-\n| default || string/number || nil || Default value to select by key, if the default doesn\'t match the list we use the first row\n|-\n| list || table || <required> || List of rows to shown, must be formatted as { { "key1"", "text1" }, { "key2", "text2" } } and so on\n|}\n\n;Remarks\nYou should only call this when you know the dropdown is hidden, meanning either OnShow for the frame or in response to set/onSet, if you try and call it with it open then it\'ll show the old rows followed by the new ones.\n\nvar is used for identify the dropdown, if the dropdown is a table then the values of each must match 100%, if you have multiple dropdowns with the same var then it\'ll update the first it finds.\n\n===HAObj:CreateLabel(data)===\nAdds a simple text that can be used to break up configuration to prevent them all looking clustered together, can be used in place or grouping or with it if need be.\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| text || string || <required> || Actual text to display\n|-\n| color || table || nil || Text color, should be passed as { r = #, g = #, b = # }\n|-\n| font || fontInstance || GameFontNormal || Font instance to inherit from\n|-\n| fontPath || string || nil || Font file to use when displaying the text, by default will grab from GameFontNormal\n|-\n| fontSize || number || nil || Size of the font, can only be used if you pass fontPath too\n|-\n| fontFlag || string || nil || Display flags, see FontInstance:SetFont() for possible arguments, requires fontPath and fontSize to be used\n|-\n| xPos || number || 8 || Allows finer control over how far other widgets are from the label\n|-\n| yPos || number || 5 || Allows finger control on how far this widget is from either the side or another widget\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| label || FontString\n|}\n\n===HAObj:CreateColorPicker(data)===\nCreates a small button that can be used for setting colors, the middle of the button is the currnet color used\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| default || table || nil || Default color to use if get() returns nil\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| button || Button\n|}\n\n;Remarks\nWhen calling set and onSet we call return the value as { r = #, g = #, b = # }, get must return it in this same format.\n\n===HAObj:CreateButton(data)===\nSimple button that lets you respond when it\'s clicked\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| width || number || text width + 18 || How width the button should be\n|}\n\n;Remarks\nThis only responds to the set and onSet fields from widgetData, no value will be passed to them.\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| button || Button\n|}\n\n===HAObj:CreateCheckBox(data)===\nSimple check box\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| default || booolean || nil || Default value when get() returns nil\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| checkBox || CheckButton\n|}\n\n===HAObj:CreateInput(data)===\nText or number inputt field\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| width || number || 120 || Width of the input box\n|-\n| default || string/number || nil || Default value inside the input\n|-\n| realTime || boolean || false || By default, we only consider the input box changed when focus is lost or enter is pressed, you can change it using this to be considered changed whenever the text changes or enter is pressed\n|-\n| maxChars || number || nil || Maximum number of characters that can be entered\n|-\n| numberic || boolean || false || Only allows entering of numerical characters into the input box\n|-\n| validate || string/function || nil || Allows you to restrict whats considered valid iinput\n|-\n| error || string || nil || Shows a red "[!]" next to the widget when validate returns nil, string format is called on this, so you can also show the value entered in the error message\n|}\n\n;Remarks\nValidate allows you to restrict thats considered acceptable, if it returns nil then it\'s considered rejected  and a red "[!]" will appear using the message you provided from the error field, once validate returns anything except nil then set/onSet is called.\n\nAn example of how this works would be only allowing numeric input.\n\n local function validateInput(var, value)\n    return tonumber(value)\n end\n\nIf the user enters \'\'abc\'\' then nil is returned because no numbers can be found in it, if he entered \'\'ab10\'\' then it would return 10 and thats what would be passed to the set and onSet functions.\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| input || EditBox\n|}\n\n===HAObj:CreateSlider(data)===\nSlider for things like opacity or scale\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| default || number || nil || Default value used when get() returns nil\n|-\n| format || string || nil || This works the same way as the text field does, however we call it with a string format of Slider:GetValue() * 100, useful if you want to show something like "Scale: %d%%"\n|-\n| min || number || 0.0 || Lowest the slider can go\n|-\n| minText || string || 0% || Text showing how low the slider can go\n|-\n| max || number || 100 || Highest the slider can go\n|-\n| maxText || string || 100% || Text showing how high the slider can go\n|-\n| step || number || 0.01 || How much to increment the slider by when dragged, lower numbers give finer controls when sliding it\n|-\n| manualInput || boolean || false || Shows a small input box next to the slider that lets the user manually enter the value\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| slider || Slider\n|}\n[[Category:Dongle]]', deleted=False)

1 similar comment
@jayvdb
Copy link
Contributor

jayvdb commented Jul 23, 2016

The contents of the attached text file are

Text('[[Image:HousingAuthority-HousingAuthority.jpg|thumb|right|300px|An example of a configuration created using HousingAuthority]]\n\n\'\'\'HousingAuthority\'\'\' is a library used to make easy configurations that go into OptionHouse.\n\n==Table data==\n===frameData===\n;Fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| frame || frame || frame || Frame you want all of the HA widgets to go onto, if no frame is passed then a blank unnamed one is created.\n|-\n| columns || number || 1 || Display style, 1 is a one by one style, 2 will be 2 widgets per a row and so on\n|-\n| handler || table || nil || Handler for all callbacks to use, all callbacks require set/onSet/get to be passed as a string if this is set.\n|-\n| set || function/string || nil || The set callback that all widgets inherit\n|-\n| onSet || function/string || nil || The onSet callback that all widgets inherit\n|-\n| get || function/string || nil || The get callback that all widgets inherit\n|}\n;Remarks\nYou only need to pass the frame if you\'re doing some sort of custom modification to it, otherwise you can just skip it and it\'ll handle everything.\n\nIf you do pass a frame, do not rely on it being the one you should register with OptionHouse if your widgets are going to overlap off the OptionHouse display frame we wrap it a scroll frame around it.\n\n===widgetData===\nAll HousingAuthority widgets (input, color, dropdown, slider, checkbox, button) accept these by default as fields so aren\'t listed.\n\n;Fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| text || string || <required> || Text shown next to the widget\n|-\n| group || string || nil || Used for grouping widgets together\n|-\n| var || string/number/table || <required> || Used for identifying widgets, passed for all set/onSet/get/validate functions\n|-\n| help || string || nil || Shows a little "[?]" next to each widget in green, handy if you need to clarify or give extra information that can\'t be explained in the text alone.\n|-\n| handler || table || nil || Handler function for using in the callbacks require set/onSet/get to be passed as a string if this is set.\n|-\n| set || function/string || <required> || Function called when a widgets configuration value changes\n|-\n| onSet || function/string || nil || Same as set, however you should only use this if you need to know when something changes not changing the configuration\n|-\n| get || function/string || <required> || Called when we\'re loading the widget and when the frame is shown, the actual value of the widget\n|-\n| order || integer || 999999 || Order to display the widgets in\n|}\n\n;Remarks\n\'\'\'Grouping\'\'\'\n\nGrouping is a way to break up configuration so it doesn\'t look like a single mass of options, if one widget has the group field passed all of them must, the value should be the text that you want displayed, for example the below will show an input and color widget inside a frame labeled "Frame" and a check inside a frame labeled "General".\n\n { { type = "input",\n     group = "Frame",\n     <input data>\n   }\n   { type = "color",\n     group = "Frame",\n     <input data>\n   }\n   { type = "check",\n     group = "General",\n     <input data>\n   } }\n\n\'\'\'Callbacks\'\'\'\nThese are how the callback functions are handled along with arguments used.\n\n\'\'No handlers passed\'\'\n\nset(var, value)\nonSet(var, value)\nvalidate(var, value)\nget(var)\n\n\'\'Handler passed\'\'\n\nhandler[set](handler, var, value)\nhandler[onSet](handler, var, value)\nhandler[validate](handler, var, value)\nhandler[get](handler, var)\n\n==HousingAuthority API==\n===HA:RegisterFrame([frameData])===\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| HAObj || table || HousingAuthority data object for registering widgets\n|}\n\n===HA:CreateConfiguration(widgets[, frameData])===\n;Args\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| widgets || table || List of all the widgets you want to add\n|-\n| frameData || table || Frame data \n|}\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| frame || frame || Frame that should be registered with OptionHouse, this is just the results of [[#HAObj:GetFrame.28.29|HAObj:GetFrame()]]\n|}\n\n;Types\nList of widget types that can be used\n\n{| class="darktable"\n|-\n! Type !! Called Function\n|-\n| group || [[#HAObj:CreateGroup.28data.29|HAObj:CreateGroup()]]\n|-\n| input || [[#HAObj:CreateInput.28data.29|HAObj:CreateInput()]]\n|-\n| dropdown || [[#HAObj:CreateDropdown.28data.29|HAObj:CreateDropdown()]]\n|-\n| color || [[#HAObj:CreateColorPicker.28data.29|HAObj:CreateColorPicker()]]\n|-\n| check || [[#HAObj:CreateCheckBox.28data.29|HAObj:CreateCheckBox()]]\n|-\n| button || [[#HAObj:CreateButton.28data.29|HAObj:CreateButton()]]\n|-\n| slider || [[#HAObj:CreateSlider.28data.29|HAObj:CreateSlider()]]\n|-\n| label || [[#HAObj:CreateLabel.28data.29|HAObj:CreateLabel()]]\n|}\n\n;Remarks\nMost of the time, all you want is to call this and just pass the table with all the configuratiions, if you need more flexability you can use the below HAObject API\'s.\n\nTables should look like this,\n\n { { type = "input",\n     <input data arguments>\n   },\n   { type = "dropdown",\n     <dropdown data arguments>\n   },\n }\n\nand so on.\n\n==HousingAuthority Object API==\n===HAObj:GetFrame()===\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| frame || Frame/ScrollFrame || Frame with all the widgets displayed in it, that should be registered with OptionHouse\n|}\n\n;Remarks\nOnce you call this, you can no longer call any of the widget creation functions, if the total height of all the widgets is creater then 280 then we wrap the passed frame around a ScrollFrame and return the ScrollFrame instead.\n\n===HAObj:GetObject(frame)===\nReturns the HAObj that created the frame that was passed in.\n\n;Args\n{| class="darktable"\n|-\n! Name !! Type !! Details\n|-\n| Frame || frame || HA display frame thats given when calling [[#HAObj:GetFrame.28.29|HAObj:GetFrame()]]\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type !! Details\n|-\n| HAObj || table || Useful if you want to update a dropdown thats already beeen created, but you created it using [[#HA:CreateConfiguration.28widgets.5B.2C_frameData.5D.29|HAObj:CreateConfiguratiion()]\n|}\n\n===HAObj:CreateGroup(data)===\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| background || table || rgb of 0.094117 || Backdrop color of the group, by default this is a blackish gray\n|-\n| border || table || rgb of 0.4 | Backdrop border color of the group, by default this is gray\n|}\n\n;Remarks\nThis is a way to configure how your group frames will look, not required if you\'re using grouping due to the defaults, you should pass the tables formatted as { r = #, g = #, b = # } for both background and border.\n\n===HAObj:CreateDropdown(data)===\nDropdown for selecting a list of options, useful when you don\'t want them to be able to enter anytihng like in an input \n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| text || string || <required> || Actual text to display\n|-\n| default || string/number || nil || Default value to select by key, if the default doesn\'t match the list we use the first row\n|-\n| list || table || <required> || List of rows to shown, must be formatted as { { "key1"", "text1" }, { "key2", "text2" } } and so on\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| dropdownFrame || Frame\n|}\n\n===HAObj:UpdateDropdown(data)===\nAllows you to update an already created dropdown with a new default and list\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| var || table/string/number || <required> || Used for identifying the droopdown to be updated\n|-\n| default || string/number || nil || Default value to select by key, if the default doesn\'t match the list we use the first row\n|-\n| list || table || <required> || List of rows to shown, must be formatted as { { "key1"", "text1" }, { "key2", "text2" } } and so on\n|}\n\n;Remarks\nYou should only call this when you know the dropdown is hidden, meanning either OnShow for the frame or in response to set/onSet, if you try and call it with it open then it\'ll show the old rows followed by the new ones.\n\nvar is used for identify the dropdown, if the dropdown is a table then the values of each must match 100%, if you have multiple dropdowns with the same var then it\'ll update the first it finds.\n\n===HAObj:CreateLabel(data)===\nAdds a simple text that can be used to break up configuration to prevent them all looking clustered together, can be used in place or grouping or with it if need be.\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| text || string || <required> || Actual text to display\n|-\n| color || table || nil || Text color, should be passed as { r = #, g = #, b = # }\n|-\n| font || fontInstance || GameFontNormal || Font instance to inherit from\n|-\n| fontPath || string || nil || Font file to use when displaying the text, by default will grab from GameFontNormal\n|-\n| fontSize || number || nil || Size of the font, can only be used if you pass fontPath too\n|-\n| fontFlag || string || nil || Display flags, see FontInstance:SetFont() for possible arguments, requires fontPath and fontSize to be used\n|-\n| xPos || number || 8 || Allows finer control over how far other widgets are from the label\n|-\n| yPos || number || 5 || Allows finger control on how far this widget is from either the side or another widget\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| label || FontString\n|}\n\n===HAObj:CreateColorPicker(data)===\nCreates a small button that can be used for setting colors, the middle of the button is the currnet color used\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| default || table || nil || Default color to use if get() returns nil\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| button || Button\n|}\n\n;Remarks\nWhen calling set and onSet we call return the value as { r = #, g = #, b = # }, get must return it in this same format.\n\n===HAObj:CreateButton(data)===\nSimple button that lets you respond when it\'s clicked\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| width || number || text width + 18 || How width the button should be\n|}\n\n;Remarks\nThis only responds to the set and onSet fields from widgetData, no value will be passed to them.\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| button || Button\n|}\n\n===HAObj:CreateCheckBox(data)===\nSimple check box\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| default || booolean || nil || Default value when get() returns nil\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| checkBox || CheckButton\n|}\n\n===HAObj:CreateInput(data)===\nText or number inputt field\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| width || number || 120 || Width of the input box\n|-\n| default || string/number || nil || Default value inside the input\n|-\n| realTime || boolean || false || By default, we only consider the input box changed when focus is lost or enter is pressed, you can change it using this to be considered changed whenever the text changes or enter is pressed\n|-\n| maxChars || number || nil || Maximum number of characters that can be entered\n|-\n| numberic || boolean || false || Only allows entering of numerical characters into the input box\n|-\n| validate || string/function || nil || Allows you to restrict whats considered valid iinput\n|-\n| error || string || nil || Shows a red "[!]" next to the widget when validate returns nil, string format is called on this, so you can also show the value entered in the error message\n|}\n\n;Remarks\nValidate allows you to restrict thats considered acceptable, if it returns nil then it\'s considered rejected  and a red "[!]" will appear using the message you provided from the error field, once validate returns anything except nil then set/onSet is called.\n\nAn example of how this works would be only allowing numeric input.\n\n local function validateInput(var, value)\n    return tonumber(value)\n end\n\nIf the user enters \'\'abc\'\' then nil is returned because no numbers can be found in it, if he entered \'\'ab10\'\' then it would return 10 and thats what would be passed to the set and onSet functions.\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| input || EditBox\n|}\n\n===HAObj:CreateSlider(data)===\nSlider for things like opacity or scale\n\n;Data fields\n{| class="darktable"\n|-\n! Field !! Type !! Default !! Details\n|-\n| default || number || nil || Default value used when get() returns nil\n|-\n| format || string || nil || This works the same way as the text field does, however we call it with a string format of Slider:GetValue() * 100, useful if you want to show something like "Scale: %d%%"\n|-\n| min || number || 0.0 || Lowest the slider can go\n|-\n| minText || string || 0% || Text showing how low the slider can go\n|-\n| max || number || 100 || Highest the slider can go\n|-\n| maxText || string || 100% || Text showing how high the slider can go\n|-\n| step || number || 0.01 || How much to increment the slider by when dragged, lower numbers give finer controls when sliding it\n|-\n| manualInput || boolean || false || Shows a small input box next to the slider that lets the user manually enter the value\n|}\n\n;Returns\n{| class="darktable"\n|-\n! Return !! Type\n|-\n| slider || Slider\n|}\n[[Category:Dongle]]', deleted=False)

@lahwaacz
Copy link
Contributor

Duplicate of #40 and #65. Use skip_style_tags=True as a temporary workaround.

@earwig earwig assigned earwig and unassigned earwig Dec 30, 2016
earwig added a commit that referenced this issue Jun 23, 2017
Also removed the max cycles stop-gap, allowing much more complex pages
to be parsed quickly without losing nodes at the end

Also fixes #65, fixes #102, fixes #165, fixes #183
Also fixes #81 (Rafael Nadal parsing bug)
Also fixes #53, fixes #58, fixes #88, fixes #152 (duplicate issues)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants