PINE LIBRARY

Text

388
Library "Text"
library to format text in different fonts or cases plus a sort function.

🔸 Credits and Usage

This library is inspired by the work of three authors (in chronological order of publication date):



🔹 Fonts

Besides extra added font options, the toFont(fromText, font) method uses a different technique. On the first runtime bar (whether it is barstate.isfirst, barstate.islast, or between) regular letters and numbers and mapped with the chosen font. After this, each character is replaced using the build-in key - value pair map function.

Also an enum Efont is included.

Note: Some fonts are not complete, for example there isn't a replacement for every character in Superscript/Subscript.

Example of usage (besides the included table example):
Pine Script®
import fikira/Text/1 as t i_font = input.enum(t.Efont.Blocks) if barstate.islast sentence = "this sentence contains words" label.new(bar_index, 0, t.toFont(fromText = sentence, font = str.tostring(i_font)), style=label.style_label_lower_right) label.new(bar_index, 0, t.toFont(fromText = sentence, font = "Circled" ), style=label.style_label_lower_left ) label.new(bar_index, 0, t.toFont(fromText = sentence, font = "Wiggly" ), style=label.style_label_upper_right) label.new(bar_index, 0, t.toFont(fromText = sentence, font = "Upside Latin" ), style=label.style_label_upper_left )



🔹 Cases

The script includes a toCase(fromText, case) method to transform text into snake_case, UPPER SNAKE_CASE, kebab-case, camelCase or PascalCase, as well as an enum Ecase.

Example of usage (besides the included table example):
Pine Script®
import fikira/Text/1 as t i_case = input.enum(t.Ecase.camel) if barstate.islast sentence = "this sentence contains words" label.new(bar_index, 0, t.toCase(fromText = sentence, case = str.tostring(i_case)), style=label.style_label_lower_right) label.new(bar_index, 0, t.toCase(fromText = sentence, case = "snake_case" ), style=label.style_label_lower_left ) label.new(bar_index, 0, t.toCase(fromText = sentence, case = "PascalCase" ), style=label.style_label_upper_right) label.new(bar_index, 0, t.toCase(fromText = sentence, case = "SNAKE_CASE" ), style=label.style_label_upper_left )



🔹 Sort

The sort(strings, order, sortByUnicodeDecimalNumbers) method returns a sorted array of strings.

  • strings: array of strings, for example
    Pine Script®
    words = array.from("Aword", "beyond", "Space", "salt", "pepper", "swing", "someThing", "otherThing", "12345", "_firstWord")
  • order: "asc" / "desc" (ascending / descending)
  • sortByUnicodeDecimalNumbers: true/false; default = false


_____

• sortByUnicodeDecimalNumbers: every Unicode character is linked to a Unicode Decimal number (wikipedia.org/wiki/List_of_Unicode_characters), for example:

1 49
2 50
3 51
...
A 65
B 66
...
S 83
...
_ 95
` 96
a 97
b 98
...
o 111
p 112
q 113
r 114
s 115
...

This means, if we sort without adjusting (sortByUnicodeDecimalNumbers = true), in ascending order, the letter b (98 - small) would be after S (83 - Capital).
By disabling sortByUnicodeDecimalNumbers, Capital letters are intermediate transformed to str.lower() after which the Unicode Decimal number is retrieved from the small number instead of the capital number. For example S (83) -> s (115), after which the number 115 is used to sort instead of 83.

Example of usage (besides the included table example):
Pine Script®
import fikira/Text/1 as t if barstate.islast aWords = array.from("Aword", "beyond", "Space", "salt", "pepper", "swing", "someThing", "otherThing", "12345", "_firstWord") label.new(bar_index, 0, str.tostring(t.sort(strings= aWords, order = 'asc' , sortByUnicodeDecimalNumbers = false)), style=label.style_label_lower_right) label.new(bar_index, 0, str.tostring(t.sort(strings= aWords, order = 'desc', sortByUnicodeDecimalNumbers = false)), style=label.style_label_lower_left ) label.new(bar_index, 0, str.tostring(t.sort(strings= aWords, order = 'asc' , sortByUnicodeDecimalNumbers = true )), style=label.style_label_upper_right) label.new(bar_index, 0, str.tostring(t.sort(strings= aWords, order = 'desc', sortByUnicodeDecimalNumbers = true )), style=label.style_label_upper_left )



🔸 Methods/functions

method toFont(fromText, font)
  toFont : Transforms text into the selected font
  Namespace types: series string, simple string, input string, const string
  Parameters:
    fromText (string)
    font (string)
  Returns: `fromText` transformed to desired `font`

method toCase(fromText, case)
  toCase : formats text to snake_case, UPPER SNAKE_CASE, kebab-case, camelCase or PascalCase
  Namespace types: series string, simple string, input string, const string
  Parameters:
    fromText (string)
    case (string)
  Returns: `fromText` formatted to desired `case`

method sort(strings, order, sortByUnicodeDecimalNumbers)
  sort : sorts an array of strings, ascending/descending and by Unicode Decimal numbers or not.
  Namespace types: array<string>
  Parameters:
    strings (array<string>)
    order (string)
    sortByUnicodeDecimalNumbers (bool)
  Returns: Sorted array of strings

Feragatname

Bilgiler ve yayınlar, TradingView tarafından sağlanan veya onaylanan finansal, yatırım, işlem veya diğer türden tavsiye veya tavsiyeler anlamına gelmez ve teşkil etmez. Kullanım Şartları'nda daha fazlasını okuyun.