It is currently April 18th, 2024, 5:05 am

Unicode character codes

Get help with creating, editing & fixing problems with skins
User avatar
OctopusProteins
Posts: 19
Joined: December 25th, 2017, 2:04 pm

Unicode character codes

Post by OctopusProteins »

Hello all,

I am getting a string from webparser, might look something like this:

Code: Select all

It consists of two separate satellite constellations \u2013 a limited test system that has been operating since 2000, and a full-scale global navigation system that is currently under construction.
As you can see, the string contains a Unicode (\u2013). When I display it, the string contains that, not the actual character it represents. How can I convert this to a real character?

The .ini file is already in UCS-2 LE BOM, in case it matters. I have already checked the API, and there is no way to get the codes to show in HTML format or otherwise. Thanks in advance.

Here is the skin file:

Code: Select all

[Rainmeter]
Update=150
AccurateText=1
@Include=#@#Variables.inc
[Metadata]
Name=LaunchLibrary Display
Author=OctopusProteins
Information=Made possible by the LaunchLibrary API. launchlibrary.net
Version=1.6
License=Creative Commons Attribution - Non - Commercial - Share Alike 3.0

[Variables]
Direction=-1
CURRENTURL=https://launchlibrary.net/1.3/launch/next/5
DeviantARTpage=http://fav.me/dby4dwt
Version=1.6

[MeasureLatestVersion]
Measure=Plugin
Plugin=WebParser
URL="#DeviantARTpage#"
RegExp="(?siU)LaunchDisplay.+([0-9]+\.[0-9]+)"     
StringIndex=1
UpdateDivider=20
FinishAction=[!SetOption MeterUpdateAlert Hidden "([*MeasureHideNewVersionAlert*])"]
[MeasureAlertFlasher]
Measure=Calc
Formula="(MeasureAlertFlasher=1)?0:1"
UpdateDivider=4

[MeasureHideNewVersionAlert]
Measure=Script
ScriptFile=#@#HideNewVersionAlert.lua

[MeterBackground]
Meter=Image
X=10
Y=0
W=645
H=665
SolidColor=0,0,0,30
UpdateDivider=50

; ------------------ Background for Desc ---------------------------------
[MeterEntry1]
Meter=Image
X=335
Y=0
W=320
H=125
SolidColor=#Color2#
UpdateDivider=50
[MeterEntry2]
Meter=Image
X=335
Y=135
W=320
H=125
SolidColor=#Color2#
UpdateDivider=50
[MeterEntry3]
Meter=Image
X=335
Y=270
W=320
H=125
SolidColor=#Color2#
UpdateDivider=50
[MeterEntry4]
Meter=Image
X=335
Y=405
W=320
H=125
SolidColor=#Color2#
UpdateDivider=50
[MeterEntry5]
Meter=Image
X=335
Y=540
W=320
H=125
SolidColor=#Color2#
UpdateDivider=50
;-----------------Entry BACK---------------------------------
[MeterDesc1]
Meter=Image
X=10
Y=0
W=320
H=125
SolidColor=#Color1#
UpdateDivider=50
[MeterDesc2]
Meter=Image
X=10
Y=135
W=320
H=125
SolidColor=#Color1#
UpdateDivider=50
[MeterDesc3]
Meter=Image
X=10
Y=270
W=320
H=125
SolidColor=#Color1#
UpdateDivider=50
[MeterDesc4]
Meter=Image
X=10
Y=405
W=320
H=125
SolidColor=#Color1#
UpdateDivider=50
[MeterDesc5]
Meter=Image
X=10
Y=540
W=320
H=125
SolidColor=#Color1#
UpdateDivider=50
;--------------------WebParser-----------------------------
[MeasureAPIParent1]
Measure=WebParser

URL=#CURRENTURL#
;             mission          windows opens         window close         vid link            launchpad       					rocket name     mission summmary										lsp					comp abbrev
RegExp=(?siU)"name":"(.*)",.*"windowstart":"(.*)",.*"windowend":"(.*)",.*"vidURLs":\[(.*)].*"name":"(.*)",.*"rocket":\{"id":.*"name":"(.*)",.*"missions":\[(?(?=\{"id":).*\{"id":.*",)(?(?="description":").*"description":"(.*)",").*"lsp":\{.*"name":"(.*)",.*"abbrev":"(.*)",
UpdateDivider=10
[MeasureAPIParent2]
Measure=WebParser

URL=#CURRENTURL#
;			             mission          windows opens         window close         vid link            launchpad       					rocket name     mission summmary			lsp					comp abbrev
RegExp=(?siU)]}},{.*"name":"(.*)",.*"windowstart":"(.*)",.*"windowend":"(.*)",.*"vidURLs":\[(.*)].*"name":"(.*)",.*"rocket":\{"id":.*"name":"(.*)",.*"missions":\[(?(?=\{"id":).*\{"id":.*",)(?(?="description":").*"description":"(.*)",").*"lsp":\{.*"name":"(.*)",.*"abbrev":"(.*)",
UpdateDivider=10
[MeasureAPIParent3]
Measure=WebParser

URL=#CURRENTURL#
;							             mission          windows opens         window close         vid link            launchpad       					rocket name     mission summmary			lsp					comp abbrev
RegExp=(?siU)]}},{.*]}},{.*"name":"(.*)",.*"windowstart":"(.*)",.*"windowend":"(.*)",.*"vidURLs":\[(.*)].*"name":"(.*)",.*"rocket":\{"id":.*"name":"(.*)",.*"missions":\[(?(?=\{"id":).*\{"id":.*",)(?(?="description":").*"description":"(.*)",").*"lsp":\{.*"name":"(.*)",.*"abbrev":"(.*)",
UpdateDivider=10
[MeasureAPIParent4]
Measure=WebParser

URL=#CURRENTURL#
;										             mission          windows opens         window close         vid link            launchpad       					rocket name     mission summmary			lsp					comp abbrev
RegExp=(?siU)]}},{.*]}},{.*]}},{.*"name":"(.*)",.*"windowstart":"(.*)",.*"windowend":"(.*)",.*"vidURLs":\[(.*)].*"name":"(.*)",.*"rocket":\{"id":.*"name":"(.*)",.*"missions":\[(?(?=\{"id":).*\{"id":.*",)(?(?="description":").*"description":"(.*)",").*"lsp":\{.*"name":"(.*)",.*"abbrev":"(.*)",

UpdateDivider=10
[MeasureAPIParent5]
Measure=WebParser

URL=#CURRENTURL#
;													             mission          windows opens         window close         vid link            launchpad       					rocket name     mission summmary			lsp					comp abbrev
RegExp=(?siU)]}},{.*]}},{.*]}},{.*]}},{.*"name":"(.*)",.*"windowstart":"(.*)",.*"windowend":"(.*)",.*"vidURLs":\[(.*)].*"name":"(.*)",.*"rocket":\{"id":.*"name":"(.*)",.*"missions":\[(?(?=\{"id":).*\{"id":.*",)(?(?="description":").*"description":"(.*)",").*"lsp":\{.*"name":"(.*)",.*"abbrev":"(.*)",
UpdateDivider=10
;file://#CURRENTPATH#FILENAME.html
;]}},{"id":.*
;-------------------ParserChildren1---------------------
[Measure1Mission]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=1
Substitute="\":""
[Measure1Open]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=2
[Lua1Open]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure1OpenYear
Month=Measure1OpenMonth
Day=Measure1OpenDay
Hour=Measure1OpenHour
Minute=Measure1OpenMinute
Second=Measure1OpenSecond
var=1Open

[Measure1OpenYear]
Measure=String
String=[Measure1Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1OpenM]
Measure=String
String=[Measure1Open]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1OpenMonth]
Measure=String
String=[Measure1OpenM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure1OpenDay]
Measure=String
String=[Measure1Open]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1OpenHour]
Measure=String
String=[Measure1Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1OpenMinute]
Measure=String
String=[Measure1Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure1OpenSecond]
Measure=String
String=[Measure1Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure1Close]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=3
[Lua1Close]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure1CloseYear
Month=Measure1CloseMonth
Day=Measure1CloseDay
Hour=Measure1CloseHour
Minute=Measure1CloseMinute
Second=Measure1CloseSecond
var=1Close

[Measure1CloseYear]
Measure=String
String=[Measure1Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1CloseM]
Measure=String
String=[Measure1Close]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1CloseMonth]
Measure=String
String=[Measure1CloseM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure1CloseDay]
Measure=String
String=[Measure1Close]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1CloseHour]
Measure=String
String=[Measure1Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure1CloseMinute]
Measure=String
String=[Measure1Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure1CloseSecond]
Measure=String
String=[Measure1Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1

[Measure1Video]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=4
Substitute="\":""
[Measure1Launchpad]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=5
Substitute="\":""
[Measure1Company]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=8
[Measure1Abbrev]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=9
Substitute="\":""
[Measure1Rocket]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=6
Substitute="\":""
[Measure1Description]
Measure=WebParser
URL=[MeasureAPIParent1]
StringIndex=7
Substitute="":"No Description Available."
;-------------------ParserChildren2---------------------
[Measure2Mission]
Measure=WebParser

URL=[MeasureAPIParent2]
StringIndex=1
Substitute="\":""
[Measure2Open]
Measure=WebParser

URL=[MeasureAPIParent2]
StringIndex=2
[Lua2Open]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure2OpenYear
Month=Measure2OpenMonth
Day=Measure2OpenDay
Hour=Measure2OpenHour
Minute=Measure2OpenMinute
Second=Measure2OpenSecond
var=2Open

[Measure2OpenYear]
Measure=String
String=[Measure2Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2OpenM]
Measure=String
String=[Measure2Open]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2OpenMonth]
Measure=String
String=[Measure2OpenM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure2OpenDay]
Measure=String
String=[Measure2Open]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2OpenHour]
Measure=String
String=[Measure2Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2OpenMinute]
Measure=String
String=[Measure2Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure2OpenSecond]
Measure=String
String=[Measure2Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure2Close]
Measure=WebParser

URL=[MeasureAPIParent2]
StringIndex=3
[Lua2Close]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure2CloseYear
Month=Measure2CloseMonth
Day=Measure2CloseDay
Hour=Measure2CloseHour
Minute=Measure2CloseMinute
Second=Measure2CloseSecond
var=2Close

[Measure2CloseYear]
Measure=String
String=[Measure2Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2CloseM]
Measure=String
String=[Measure2Close]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2CloseMonth]
Measure=String
String=[Measure2CloseM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure2CloseDay]
Measure=String
String=[Measure2Close]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2CloseHour]
Measure=String
String=[Measure2Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure2CloseMinute]
Measure=String
String=[Measure2Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure2CloseSecond]
Measure=String
String=[Measure2Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure2Video]
Measure=WebParser
URL=[MeasureAPIParent2]
StringIndex=4
Substitute="\":""
[Measure2Launchpad]
Measure=WebParser
URL=[MeasureAPIParent2]
StringIndex=5
Substitute="\":""
[Measure2Company]
Measure=WebParser
URL=[MeasureAPIParent2]
StringIndex=8
Substitute="\":""
[Measure2Abbrev]
Measure=WebParser
URL=[MeasureAPIParent2]
StringIndex=9
Substitute="\":""
[Measure2Rocket]
Measure=WebParser
URL=[MeasureAPIParent2]
StringIndex=6
Substitute="\":""
[Measure2Description]
Measure=WebParser
URL=[MeasureAPIParent2]
StringIndex=7
Substitute="":"No Description Available."
;-------------------ParserChildren3---------------------
[Measure3Mission]
Measure=WebParser

URL=[MeasureAPIParent3]
StringIndex=1
Substitute="\":""
[Measure3Open]
Measure=WebParser

URL=[MeasureAPIParent3]
StringIndex=2
[Lua3Open]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure3OpenYear
Month=Measure3OpenMonth
Day=Measure3OpenDay
Hour=Measure3OpenHour
Minute=Measure3OpenMinute
Second=Measure3OpenSecond
var=3Open

[Measure3OpenYear]
Measure=String
String=[Measure3Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3OpenM]
Measure=String
String=[Measure3Open]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3OpenMonth]
Measure=String
String=[Measure3OpenM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure3OpenDay]
Measure=String
String=[Measure3Open]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3OpenHour]
Measure=String
String=[Measure3Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3OpenMinute]
Measure=String
String=[Measure3Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure3OpenSecond]
Measure=String
String=[Measure3Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure3Close]
Measure=WebParser

URL=[MeasureAPIParent3]
StringIndex=3
[Lua3Close]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure3CloseYear
Month=Measure3CloseMonth
Day=Measure3CloseDay
Hour=Measure3CloseHour
Minute=Measure3CloseMinute
Second=Measure3CloseSecond
var=3Close

[Measure3CloseYear]
Measure=String
String=[Measure3Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3CloseM]
Measure=String
String=[Measure3Close]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3CloseMonth]
Measure=String
String=[Measure3CloseM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure3CloseDay]
Measure=String
String=[Measure3Close]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3CloseHour]
Measure=String
String=[Measure3Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure3CloseMinute]
Measure=String
String=[Measure3Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure3CloseSecond]
Measure=String
String=[Measure3Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure3Video]
Measure=WebParser
URL=[MeasureAPIParent3]
StringIndex=4
Substitute="\":""
[Measure3Launchpad]
Measure=WebParser
URL=[MeasureAPIParent3]
StringIndex=5
Substitute="\":""
[Measure3Company]
Measure=WebParser
URL=[MeasureAPIParent3]
StringIndex=8
Substitute="\":""
[Measure3Abbrev]
Measure=WebParser
URL=[MeasureAPIParent3]
StringIndex=9
Substitute="\":""
[Measure3Rocket]
Measure=WebParser
URL=[MeasureAPIParent3]
StringIndex=6
Substitute="\":""
[Measure3Description]
Measure=WebParser
URL=[MeasureAPIParent3]
StringIndex=7
Substitute="":"No Description Available."
;-------------------ParserChildren4---------------------
[Measure4Mission]
Measure=WebParser

URL=[MeasureAPIParent4]
StringIndex=1
Substitute="\":""
[Measure4Open]
Measure=WebParser

URL=[MeasureAPIParent4]
StringIndex=2
[Lua4Open]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure4OpenYear
Month=Measure4OpenMonth
Day=Measure4OpenDay
Hour=Measure4OpenHour
Minute=Measure4OpenMinute
Second=Measure4OpenSecond
var=4Open

[Measure4OpenYear]
Measure=String
String=[Measure4Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4OpenM]
Measure=String
String=[Measure4Open]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4OpenMonth]
Measure=String
String=[Measure4OpenM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure4OpenDay]
Measure=String
String=[Measure4Open]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4OpenHour]
Measure=String
String=[Measure4Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4OpenMinute]
Measure=String
String=[Measure4Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure4OpenSecond]
Measure=String
String=[Measure4Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure4Close]
Measure=WebParser

URL=[MeasureAPIParent4]
StringIndex=3
[Lua4Close]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure4CloseYear
Month=Measure4CloseMonth
Day=Measure4CloseDay
Hour=Measure4CloseHour
Minute=Measure4CloseMinute
Second=Measure4CloseSecond
var=4Close

[Measure4CloseYear]
Measure=String
String=[Measure4Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4CloseM]
Measure=String
String=[Measure4Close]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4CloseMonth]
Measure=String
String=[Measure4CloseM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure4CloseDay]
Measure=String
String=[Measure4Close]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4CloseHour]
Measure=String
String=[Measure4Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure4CloseMinute]
Measure=String
String=[Measure4Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure4CloseSecond]
Measure=String
String=[Measure4Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure4Video]
Measure=WebParser
URL=[MeasureAPIParent4]
StringIndex=4
Substitute="\":""
[Measure4Launchpad]
Measure=WebParser
URL=[MeasureAPIParent4]
StringIndex=5
Substitute="\":""
[Measure4Company]
Measure=WebParser
URL=[MeasureAPIParent4]
StringIndex=8
Substitute="\":""
[Measure4Abbrev]
Measure=WebParser
URL=[MeasureAPIParent4]
StringIndex=9
Substitute="\":""
[Measure4Rocket]
Measure=WebParser
URL=[MeasureAPIParent4]
StringIndex=6
Substitute="\":""
[Measure4Description]
Measure=WebParser
URL=[MeasureAPIParent4]
StringIndex=7
Substitute="":"No Description Available."
;-------------------ParserChildren5---------------------
[Measure5Mission]
Measure=WebParser

URL=[MeasureAPIParent5]
StringIndex=1
Substitute="\":""
[Measure5Open]
Measure=WebParser

URL=[MeasureAPIParent5]
StringIndex=2
[Lua5Open]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure5OpenYear
Month=Measure5OpenMonth
Day=Measure5OpenDay
Hour=Measure5OpenHour
Minute=Measure5OpenMinute
Second=Measure5OpenSecond
var=5Open

[Measure5OpenYear]
Measure=String
String=[Measure5Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5OpenM]
Measure=String
String=[Measure5Open]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5OpenMonth]
Measure=String
String=[Measure5OpenM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure5OpenDay]
Measure=String
String=[Measure5Open]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5OpenHour]
Measure=String
String=[Measure5Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5OpenMinute]
Measure=String
String=[Measure5Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure5OpenSecond]
Measure=String
String=[Measure5Open]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure5Close]
Measure=WebParser

URL=[MeasureAPIParent5]
StringIndex=3
[Lua5Close]
Measure=Script
ScriptFile=#@#DateTime.lua
Year=Measure5CloseYear
Month=Measure5CloseMonth
Day=Measure5CloseDay
Hour=Measure5CloseHour
Minute=Measure5CloseMinute
Second=Measure5CloseSecond
var=5Close

[Measure5CloseYear]
Measure=String
String=[Measure5Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, (\d{4}) \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5CloseM]
Measure=String
String=[Measure5Close]
RegExpSubstitute=1
Substitute="(.*) \d{1,2}, \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5CloseMonth]
Measure=String
String=[Measure5CloseM]
Substitute="January":"1","February":"2","March":"3","April":"4","May":"5","June":"6","July":"7","August":"8","September":"9","October":"10","November":"11","December":"12"
DynamicVariables=1
[Measure5CloseDay]
Measure=String
String=[Measure5Close]
RegExpSubstitute=1
Substitute=".* (\d{1,2}), \d{4} \d{1,2}:\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5CloseHour]
Measure=String
String=[Measure5Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} (\d{1,2}):\d{2}:\d{2} .*":"\1"
DynamicVariables=1
[Measure5CloseMinute]
Measure=String
String=[Measure5Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:(\d{2}):\d{2} .*":"\1"
DynamicVariables=1
[Measure5CloseSecond]
Measure=String
String=[Measure5Close]
RegExpSubstitute=1
Substitute=".* \d{1,2}, \d{4} \d{1,2}:\d{2}:(\d{2}) .*":"\1"
DynamicVariables=1
[Measure5Video]
Measure=WebParser
URL=[MeasureAPIParent5]
StringIndex=4
Substitute="\":""
[Measure5Launchpad]
Measure=WebParser
URL=[MeasureAPIParent5]
StringIndex=5
Substitute="\":""
[Measure5Company]
Measure=WebParser
URL=[MeasureAPIParent5]
StringIndex=8
Substitute="\":""
[Measure5Abbrev]
Measure=WebParser
URL=[MeasureAPIParent5]
StringIndex=9
Substitute="\":""
[Measure5Rocket]
Measure=WebParser
URL=[MeasureAPIParent5]
StringIndex=6
Substitute="\":""
[Measure5Description]
Measure=WebParser
URL=[MeasureAPIParent5]
StringIndex=7
Substitute="":"No Description Available."
; -------------------------------DISPLAY METERS------------------------
;-------------------------1------------------------------------------
[Meter1Line]
Meter=Shape
Shape=Line 15,65,325,65 | Extend MyModifiers1
MyModifiers1=Fill Color 255,255,255,255 | StrokeWidth 1 | Stroke Color 255,255,255,255
UpdateDivider=50
[Lua1Mission]
Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure1Mission
 Delimiter=" | "
 Width=33
 
[Meter1Mission]
Meter=String
MeasureName=Lua1Mission
X=325
Y=5
W=300
H=20
FontFace=#TextFont#
FontSize=#HeaderFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Meter1Open]
Meter=String
X=315
Y=25
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Open: #1Open#
DynamicVariables=1
[Meter1Close]
Meter=String
X=315
Y=40
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Close: #1Close#
DynamicVariables=1
[Lua1Video]
Measure=Script
ScriptFile=#@#VideoIcon.lua
CurrentMeasure=Measure1Video
[Meter1Video]
Meter=Image
MeasureName=Lua1Video
X=20
Y=30
W=42
H=30
ImageName=#@#Images\video%1.png
LeftMouseDownAction=Measure1Video
[Meter1Company]
Meter=String
MeasureName=Measure1Company
MeasureName2=Measure1Abbrev
X=325
Y=70
W=300
H=20
FontFace=#TextFontLight#
FontSize=#CompanyFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text="LSP: %1 (%2)"
ClipString=2

[Meter1Rocket]
Meter=String
MeasureName=Lua1Rocket
X=325
Y=90
W=310
H=20
FontFace=#TextFontLight#
FontSize=#RocketFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Lua1Rocket]
 Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure1Rocket|Measure1Launchpad
 Delimiter=" | "
 Width=45
[Meter1Description]
Meter=String
MeasureName=Measure1Description
X=340
Y=3
W=310
H=115
FontFace=#TextFontLight#
FontSize=#DescFontSize#
FontColor=245,255,255,255
StringAlign=Left
AntiAlias=1
ClipString=2
;-------------------------2------------------------------------------
[Lua2Mission]
Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure2Mission
 Delimiter=" | "
 Width=33
 
[Meter2Line]
Meter=Shape
Shape=Line 15,200,325,200 | Extend MyModifiers1
MyModifiers1=Fill Color 255,255,255,255 | StrokeWidth 1 | Stroke Color 255,255,255,255
UpdateDivider=50
[Meter2Mission]
Meter=String
MeasureName=Lua2Mission
X=325
Y=140
W=300
H=20
FontFace=#TextFont#
FontSize=#HeaderFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Meter2Open]
Meter=String
X=315
Y=160
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Open: #2Open#
DynamicVariables=1
[Meter2Close]
Meter=String
X=315
Y=175
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Close: #2Close#
DynamicVariables=1
[Lua2Video]
Measure=Script
ScriptFile=#@#VideoIcon.lua
CurrentMeasure=Measure2Video
[Meter2Video]
Meter=Image
MeasureName=Lua2Video
X=20
Y=165
W=42
H=30
ImageName=#@#Images\video%1.png
LeftMouseDownAction=Measure2Video
[Meter2Company]
Meter=String
MeasureName=Measure2Company
MeasureName2=Measure2Abbrev
X=325
Y=205
W=300
H=20
FontFace=#TextFontLight#
FontSize=#CompanyFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text="LSP: %1 (%2)"
ClipString=2
[Meter2Rocket]
Meter=String
MeasureName=Lua2Rocket
X=325
Y=225
W=310
H=20
FontFace=#TextFontLight#
FontSize=#RocketFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Lua2Rocket]
 Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure2Rocket|Measure2Launchpad
 Delimiter=" | "
 Width=45
[Meter2Description]
Meter=String
MeasureName=Measure2Description
X=340
Y=138
W=310
H=115
FontFace=#TextFontLight#
FontSize=#DescFontSize#
FontColor=245,255,255,255
StringAlign=Left
AntiAlias=1
ClipString=2
;-------------------------3------------------------------------------
[Meter3Line]
Meter=Shape
Shape=Line 15,335,325,335 | Extend MyModifiers1
MyModifiers1=Fill Color 255,255,255,255 | StrokeWidth 1 | Stroke Color 255,255,255,255
UpdateDivider=50
[Lua3Mission]
Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure3Mission
 Delimiter=""
 Width=33
[Meter3Mission]
Meter=String
MeasureName=Lua3Mission
X=325
Y=275
W=300
H=20
FontFace=#TextFont#
FontSize=#HeaderFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Meter3Open]
Meter=String
X=315
Y=295
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Open: #3Open#
DynamicVariables=1
[Meter3Close]
Meter=String
X=315
Y=310
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Close: #3Close#
DynamicVariables=1
[Lua3Video]
Measure=Script
ScriptFile=#@#VideoIcon.lua
CurrentMeasure=Measure3Video
[Meter3Video]
Meter=Image
MeasureName=Lua3Video
X=20
Y=300
W=42
H=30
ImageName=#@#Images\video%1.png
LeftMouseDownAction=Measure3Video
[Meter3Company]
Meter=String
MeasureName=Measure3Company
MeasureName2=Measure3Abbrev
X=325
Y=340
W=300
H=20
FontFace=#TextFontLight#
FontSize=#CompanyFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text="LSP: %1 (%2)"
ClipString=2
[Meter3Rocket]
Meter=String
MeasureName=Lua3Rocket
X=325
Y=360
W=310
H=20
FontFace=#TextFontLight#
FontSize=#RocketFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Lua3Rocket]
 Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure3Rocket|Measure3Launchpad
 Delimiter=" | "
 Width=45
[Meter3Description]
Meter=String
MeasureName=Measure3Description
X=340
Y=273
W=310
H=115
FontFace=#TextFontLight#
FontSize=#DescFontSize#
FontColor=245,255,255,255
StringAlign=Left
AntiAlias=1
ClipString=2
;-------------------------4------------------------------------------
[Meter4Line]
Meter=Shape
Shape=Line 15,470,325,470 | Extend MyModifiers1
MyModifiers1=Fill Color 255,255,255,255 | StrokeWidth 1 | Stroke Color 255,255,255,255
UpdateDivider=50
[Lua4Mission]
Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure4Mission
 Delimiter=""
 Width=33
[Meter4Mission]
Meter=String
MeasureName=Lua4Mission
X=325
Y=410
W=300
H=20
FontFace=#TextFont#
FontSize=#HeaderFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Meter4Open]
Meter=String
X=315
Y=430
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Open: #4Open#
DynamicVariables=1
[Meter4Close]
Meter=String
X=315
Y=445
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Close: #4Close#
DynamicVariables=1
[Lua4Video]
Measure=Script
ScriptFile=#@#VideoIcon.lua
CurrentMeasure=Measure4Video
[Meter4Video]
Meter=Image
MeasureName=Lua4Video
X=20
Y=435
W=42
H=30
ImageName=#@#Images\video%1.png
LeftMouseDownAction=Measure4Video
[Meter4Company]
Meter=String
MeasureName=Measure4Company
MeasureName2=Measure4Abbrev
X=325
Y=475
W=300
H=20
FontFace=#TextFontLight#
FontSize=#CompanyFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text="LSP: %1 (%2)"
ClipString=2
[Meter4Rocket]
Meter=String
MeasureName=Lua4Rocket
X=325
Y=495
W=310
H=20
FontFace=#TextFontLight#
FontSize=#RocketFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Lua4Rocket]
 Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure4Rocket|Measure4Launchpad
 Delimiter=" | "
 Width=45
[Meter4Description]
Meter=String
MeasureName=Measure4Description
X=340
Y=408
W=310
H=115
FontFace=#TextFontLight#
FontSize=#DescFontSize#
FontColor=245,255,255,255
StringAlign=Left
AntiAlias=1
ClipString=2


;-------------------------5------------------------------------------
[Meter5Line]
Meter=Shape
Shape=Line 15,605,325,605 | Extend MyModifiers1
MyModifiers1=Fill Color 255,255,255,255 | StrokeWidth 1 | Stroke Color 255,255,255,255
UpdateDivider=50
[Lua5Mission]
Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure5Mission
 Delimiter=""
 Width=33
[Meter5Mission]
Meter=String
MeasureName=Lua5Mission
X=325
Y=545
W=300
H=20
FontFace=#TextFont#
FontSize=#HeaderFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Meter5Open]
Meter=String
X=315
Y=565
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Open: #5Open#
DynamicVariables=1
[Meter5Close]
Meter=String
X=315
Y=580
W=300
H=20
FontFace=#NumeralFont#
FontSize=#DateFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text=Window Close: #5Close#
DynamicVariables=1
[Lua5Video]
Measure=Script
ScriptFile=#@#VideoIcon.lua
CurrentMeasure=Measure5Video
[Meter5Video]
Meter=Image
MeasureName=Lua5Video
X=20*
Y=570
W=42
H=30
ImageName=#@#Images\video%1.png
LeftMouseDownAction=Measure5Video
[Meter5Company]
Meter=String
MeasureName=Measure5Company
MeasureName2=Measure5Abbrev
X=325
Y=610
W=300
H=20
FontFace=#TextFontLight#
FontSize=#CompanyFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
Text="LSP: %1 (%2)"
ClipString=2
[Meter5Rocket]
Meter=String
MeasureName=Lua5Rocket
X=325
Y=630
W=310
H=20
FontFace=#TextFontLight#
FontSize=#RocketFontSize#
FontColor=245,255,255,255
StringAlign=Right
AntiAlias=1
[Lua5Rocket]
 Measure=Script
 ScriptFile=#@#Marquee.lua
 MeasureName=Measure5Rocket|Measure5Launchpad
 Delimiter=" | "
 Width=45
[Meter5Description]
Meter=String
MeasureName=Measure5Description
X=340
Y=543
W=310
H=115
FontFace=#TextFontLight#
FontSize=#DescFontSize#
FontColor=245,255,255,255
StringAlign=Left
AntiAlias=1
ClipString=2



[MeterUpdateAlert]
Meter=Image
X=15
Y=5
MeasureName=MeasureAlertFlasher
MeasureName2=MeasureLatestVersion
ImageName=#@#\Images\Alert%1.png
ToolTipText="New Version Available (%2). Click here to download it."
Hidden=1
LeftMouseUpAction="#DeviantARTpage#"
I can also provide the Lua scripts if needed, but I don't think they are related.
Last edited by OctopusProteins on February 3rd, 2018, 6:31 pm, edited 1 time in total.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Unicode character codes

Post by jsmorley »

If there are some limited known number of these characters used, you can do:

Code: Select all

[MeasureString]
Measure=String
String=It consists of two separate satellite constellations \u2013 a limited test system that has been operating since 2000, and a full-scale global navigation system that is currently under construction.
RegExpSubstitute=1
Substitute="\\u2013":"[\x2013]"
I am faking it with a String measure, just do the same on the "child" WebParser measure that is returning that string.

That will work. The problem is that due to the order that the resolution of Inline Character section variables is done, there is a conflict with when regular [SectionVariables] are done and how the \ character is handled in a "replacement" in this case, and I don't think there is a generic method that will work for any character reference that starts with [\u. You are going to have to specify each one you want to replace.

If you are using Lua anyway, you might find it easier to do there with string:gsub(). There just might be a way with Lua to make a generic replacement, I'll look into that.
1.png
You do not have the required permissions to view the files attached to this post.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Unicode character codes

Post by jsmorley »

So yeah, there is a way to make this generic with Lua!

Skin:

Code: Select all

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1

[Lua]
Measure=Script
ScriptFile=Test.lua
Disabled=1

[MeasureString]
Measure=String
String=It consists of two separate satellite constellations \u2013 a limited test system that has been operating since 2000, and a full-scale global navigation system that is currently under construction.

[MeterString]
Meter=String
W=300
ClipString=2
FontSize=11
FontWeight=400
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AntiAlias=1
Text=[&Lua:Unicode('[&MeasureString]')]
DynamicVariables=1
Test.Lua:

Code: Select all

function Unicode(inString)

	newString = string.gsub(inString, '\\u(%d+)', '\[\\x%1\]')
	
	return newString

end
1.png
https://docs.rainmeter.net/manual/lua-scripting/inline-lua/
https://docs.rainmeter.net/manual/variables/character-variables/

This defeats the "order" conflicts that arose above, by making the last thing that is done the Inline Character replacement, after the Lua returns the modified string. The Lua receives \u2013 and returns [\x2013]. This should work with any hex Unicode character code embedded in the string, as long as your font supports it.

The string.gsub() is really easy, although it looks complicated due to having to escape any \ and [ and ] characters used as a literal in either the search or replace components of the function. It simply says:

"Search for \u and (capture) one or more numeric characters (%d+) after it. Then replace the entire match with [\x and the captured %1 number characters, followed by an ending ]."
You do not have the required permissions to view the files attached to this post.
User avatar
OctopusProteins
Posts: 19
Joined: December 25th, 2017, 2:04 pm

Re: Unicode character codes

Post by OctopusProteins »

Thanks! I'll try the Lua solution when I can. Since the data comes from an API, I can't just hard-code all the values, so the Lua solution might be the best bet. I'll get back when I have tested this :)
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Unicode character codes

Post by jsmorley »

It'll work. You can simply add that Lua function to the bottom of your existing .lua file you are using in the skin, and then in any String meters that are using values from child WebParser measures, add that Inline Lua as I have it, but reference the Script measure you already have.

BTW, I would add one thing to the function...

Code: Select all

function Unicode(inString)

	if inString == '' then return end
	newString = string.gsub(inString, '\\u(%d+)', '\[\\x%1\]')
	
	return newString

end
That "if" statement is due to the fact that on the first update of the String meter, the value of the child WebParser measure will always be "" or an empty string. No point in doing the string.gsub() on that.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Unicode character codes

Post by jsmorley »

One final suggestion, just to be anal-retentive about efficiency, would be to:

1) Set UpdateDivider=-1 on the String meter. No sense in having it perform that string.gsub() on every update of the meter, it really only needs to do it when the value from the child WebParser measure is updated.

2) Set OnChangeAction=[!UpdateMeter StringMeterName] on the "child" WebParser measure. Then only when the value received from the API changes does it update the String meter and execute the string.gsub() function.

While this little Lua function is tiny and fast, it doesn't hurt to do everything as efficiently as you can, things can "add up" if not.

An alternative, that isn't quite as efficient, but less coding if you have TONS of "child" measures is to:

1) Set UpdateDivider=-1 on the String meters. No sense in having it perform that string.gsub() on every update of the meters, it really only needs to do it when the value from the child WebParser measures is updated.

2) Set FinishAction=[!UpdateMeter *] on the "parent" WebParser measure. Then only when the parent measure goes out and gets the current value(s) from the API are the String meters updated and the string.gsub() executed. This means you don't need anything on each "child" WebParser measure.
User avatar
OctopusProteins
Posts: 19
Joined: December 25th, 2017, 2:04 pm

Re: Unicode character codes

Post by OctopusProteins »

Alright.

The Lua works great, except for one thing. When the code contains letters, like so:

Code: Select all

It is a replacement for the Hispasat 1D satellite at 30\u00ba West longtitude in geostationary orbit.
It doesn't work properly.
tee.PNG
How can I edit the Lua script to also handle these cases? Thanks again.
You do not have the required permissions to view the files attached to this post.
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Unicode character codes

Post by jsmorley »

OctopusProteins wrote:Alright.

The Lua works great, except for one thing. When the code contains letters, like so:

Code: Select all

It is a replacement for the Hispasat 1D satellite at 30\u00ba West longtitude in geostationary orbit.
It doesn't work properly.
tee.PNG

How can I edit the Lua script to also handle these cases? Thanks again.
My bad. I made the assumption that all the Unicode codes are numeric characters, but of course hex is not:

Code: Select all

function Unicode(inString)

	if inString == '' then return end
	newString = string.gsub(inString, '\\u(%w+)%s', '\[\\x%1\] ')
	return newString

end	
So I am looking for one or more of any "word" (number, or letter) characters followed by a space %s. Then I add that space back on at the end, after the ].
1.png
This will fail if the string has the Unicode literally embedded in a string with no spaces. That should be rare, but it won't deal with that. There is no way to know when the hex stops and a real character starts.
You do not have the required permissions to view the files attached to this post.
User avatar
OctopusProteins
Posts: 19
Joined: December 25th, 2017, 2:04 pm

Re: Unicode character codes

Post by OctopusProteins »

Awesome! It works flawlessly now. Thanks for all your help. An inline character shouldn't appear, so this solution should work for my use. Thanks again! :17nodding
User avatar
jsmorley
Developer
Posts: 22629
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: Unicode character codes

Post by jsmorley »

Glad to help. Interesting little challenge.