summaryrefslogtreecommitdiff
path: root/awesome/lib/menubar/index_theme.lua
diff options
context:
space:
mode:
Diffstat (limited to 'awesome/lib/menubar/index_theme.lua')
-rw-r--r--awesome/lib/menubar/index_theme.lua164
1 files changed, 0 insertions, 164 deletions
diff --git a/awesome/lib/menubar/index_theme.lua b/awesome/lib/menubar/index_theme.lua
deleted file mode 100644
index 633964a..0000000
--- a/awesome/lib/menubar/index_theme.lua
+++ /dev/null
@@ -1,164 +0,0 @@
----------------------------------------------------------------------------
---- Class module for parsing an index.theme file
---
--- @author Kazunobu Kuriyama
--- @copyright 2015 Kazunobu Kuriyama
--- @classmod menubar.index_theme
----------------------------------------------------------------------------
-
--- This implementation is based on the specifications:
--- Icon Theme Specification 0.12
--- http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-0.12.html
-
-local ipairs = ipairs
-local setmetatable = setmetatable
-local string = string
-local table = table
-local io = io
-
--- index.theme groups
-local ICON_THEME = "Icon Theme"
--- index.theme keys
-local DIRECTORIES = "Directories"
-local INHERITS = "Inherits"
--- per-directory subkeys
-local TYPE = "Type"
-local SIZE = "Size"
-local MINSIZE = "MinSize"
-local MAXSIZE = "MaxSize"
-local THRESHOLD = "Threshold"
-
-local index_theme = { mt = {} }
-
---- Class constructor of `index_theme`
--- @tparam table cls Metatable that will be used. Should always be `index_theme.mt`.
--- @tparam string icon_theme_name Internal name of icon theme
--- @tparam table base_directories Paths used for lookup
--- @treturn table An instance of the class `index_theme`
-index_theme.new = function(cls, icon_theme_name, base_directories)
- local self = {}
- setmetatable(self, { __index = cls })
-
- -- Initialize the fields
- self.icon_theme_name = icon_theme_name
- self.base_directory = nil
- self[DIRECTORIES] = {}
- self[INHERITS] = {}
- self.per_directory_keys = {}
-
- -- base_directory
- local basedir = nil
- local handler = nil
- for _, dir in ipairs(base_directories) do
- basedir = dir .. "/" .. self.icon_theme_name
- handler = io.open(basedir .. "/index.theme", "r")
- if handler then
- -- Use the index.theme which is found first.
- break
- end
- end
- if not handler then
- return self
- end
- self.base_directory = basedir
-
- -- Parse index.theme.
- while true do
- local line = handler:read()
- if not line then
- break
- end
-
- local group_header = "^%[(.+)%]$"
- local group = line:match(group_header)
- if group then
- if group == ICON_THEME then
- while true do
- local item = handler:read()
- if not item then
- break
- end
- if item:match(group_header) then
- handler:seek("cur", -string.len(item) - 1)
- break
- end
-
- local k, v = item:match("^(%w+)=(.*)$")
- if k == DIRECTORIES or k == INHERITS then
- string.gsub(v, "([^,]+),?", function(match)
- table.insert(self[k], match)
- end)
- end
- end
- else
- -- This must be a 'per-directory keys' group
- local keys = {}
-
- while true do
- local item = handler:read()
- if not item then
- break
- end
- if item:match(group_header) then
- handler:seek("cur", -string.len(item) - 1)
- break
- end
-
- local k, v = item:match("^(%w+)=(%w+)$")
- if k == SIZE or k == MINSIZE or k == MAXSIZE or k == THRESHOLD then
- keys[k] = tonumber(v)
- elseif k == TYPE then
- keys[k] = v
- end
- end
-
- -- Size is a must. Other keys are optional.
- if keys[SIZE] then
- -- Set unset keys to the default values.
- if not keys[TYPE] then keys[TYPE] = THRESHOLD end
- if not keys[MINSIZE] then keys[MINSIZE] = keys[SIZE] end
- if not keys[MAXSIZE] then keys[MAXSIZE] = keys[SIZE] end
- if not keys[THRESHOLD] then keys[THRESHOLD] = 2 end
-
- self.per_directory_keys[group] = keys
- end
- end
- end
- end
-
- handler:close()
-
- return self
-end
-
---- Table of the values of the `Directories` key
--- @treturn table Values of the `Directories` key
-index_theme.get_subdirectories = function(self)
- return self[DIRECTORIES]
-end
-
---- Table of the values of the `Inherits` key
--- @treturn table Values of the `Inherits` key
-index_theme.get_inherits = function(self)
- return self[INHERITS]
-end
-
---- Query (part of) per-directory keys of a given subdirectory name.
--- @tparam table subdirectory Icon theme's subdirectory
--- @treturn[1] string Value of the `Type` key
--- @treturn[2] number Value of the `Size` key
--- @treturn[3] number VAlue of the `MinSize` key
--- @treturn[4] number Value of the `MaxSize` key
--- @treturn[5] number Value of the `Threshold` key
-function index_theme:get_per_directory_keys(subdirectory)
- local keys = self.per_directory_keys[subdirectory]
- return keys[TYPE], keys[SIZE], keys[MINSIZE], keys[MAXSIZE], keys[THRESHOLD]
-end
-
-index_theme.mt.__call = function(cls, icon_theme_name, base_directories)
- return index_theme.new(cls, icon_theme_name, base_directories)
-end
-
-return setmetatable(index_theme, index_theme.mt)
-
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80