summaryrefslogtreecommitdiff
path: root/Data/BuiltIn/Libraries/lua-addons/addons/chars
diff options
context:
space:
mode:
Diffstat (limited to 'Data/BuiltIn/Libraries/lua-addons/addons/chars')
-rw-r--r--Data/BuiltIn/Libraries/lua-addons/addons/chars/README.md34
-rw-r--r--Data/BuiltIn/Libraries/lua-addons/addons/chars/chars.lua61
2 files changed, 95 insertions, 0 deletions
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/chars/README.md b/Data/BuiltIn/Libraries/lua-addons/addons/chars/README.md
new file mode 100644
index 0000000..77609ec
--- /dev/null
+++ b/Data/BuiltIn/Libraries/lua-addons/addons/chars/README.md
@@ -0,0 +1,34 @@
+# Chars #
+This addon lets you input special chars using simple tags (e.g.: ```<note>``` for ♪). Using the pattern ```<j:text>``` any alphanumeric character will be replaced with their full-width version ("japanese style" characters). The available characters depend on the [data](https://github.com/Windower/Lua/blob/master/addons/libs/chat/chars.lua) gathered by the Windower team. If anything in there is incorrect or missing, open an issue on [Windower's Lua issue tracker](https://github.com/Windower/Lua/issues).
+
+![screenshot](http://i39.tinypic.com/spdwz6.png)
+
+## Commands ##
+
+```
+chars
+```
+
+Shows the available characters.
+
+----
+
+## Changelog ##
+
+### v1.20141219 ###
+* **fix:** Target-related tags were removed incorrectly
+
+### v1.20141218 ###
+* **fix:** Adjusted to Windower's new Lua libs API
+
+### v1.20130529 ###
+* **change:** Aligned to Windower's addon development guidelines.
+
+### v1.20130525 ###
+* **fix:** ```<j:text>``` pattern wasn't working with some special chars.
+
+### v1.20130521 ###
+* **add:** added the pattern to write using alphanumeric japanese characters.
+
+### v1.20130421 ###
+* first release.
diff --git a/Data/BuiltIn/Libraries/lua-addons/addons/chars/chars.lua b/Data/BuiltIn/Libraries/lua-addons/addons/chars/chars.lua
new file mode 100644
index 0000000..6cc8d82
--- /dev/null
+++ b/Data/BuiltIn/Libraries/lua-addons/addons/chars/chars.lua
@@ -0,0 +1,61 @@
+--[[
+Copyright © 2013-2014, Giuliano Riccio
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+* Neither the name of chars nor the
+names of its contributors may be used to endorse or promote products
+derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL Giuliano Riccio BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+]]
+
+require('lists')
+require('logger')
+require('strings')
+
+_addon.name = 'chars'
+_addon.version = '1.20141219'
+_addon.command = 'chars'
+
+chars = require('chat.chars')
+
+windower.register_event('addon command', function(...)
+ for code, char in pairs(chars) do
+ log('<%s>: %s':format(code, char))
+ end
+
+ log('Using the pattern <j:text> any alphanumeric character will be replaced with its full-width ("japanese style") version')
+end)
+
+windower.register_event('outgoing text', function(_, modified)
+ return modified:psplit('<[^>]+>', nil, true):map(function(token)
+ if token:match('^<.*>$') then
+ if token:startswith('<j:') then
+ return token:sub(4, -2):map(function(char)
+ return chars['j' .. char] or char
+ end)
+ else
+ return chars[token:sub(2, -2)] or token
+ end
+ else
+ return token
+ end
+ end):concat()
+end)