diff options
| author | ruki <[email protected]> | 2017-01-11 09:20:37 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-01-11 09:20:37 +0800 |
| commit | 1be86fced4accecba8f00b903610a42dbd32f33a (patch) | |
| tree | 8937a8407b1b4106aadff5bc441ac97a9e6a3e4e /xmake/core/language/menu.lua | |
| parent | 6ee204e38815d742b5594c22f2646647d7658a48 (diff) | |
add language menu
Diffstat (limited to 'xmake/core/language/menu.lua')
| -rw-r--r-- | xmake/core/language/menu.lua | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/xmake/core/language/menu.lua b/xmake/core/language/menu.lua new file mode 100644 index 000000000..965d7b101 --- /dev/null +++ b/xmake/core/language/menu.lua @@ -0,0 +1,97 @@ +--!The Make-like Build Utility based on Lua +-- +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- +-- Copyright (C) 2015 - 2017, TBOOX Open Source Group. +-- +-- @author ruki +-- @file menu.lua +-- + +-- define module +local menu = menu or {} + +-- load modules +local os = require("base/os") +local path = require("base/path") +local utils = require("base/utils") +local table = require("base/table") +local language = require("language/language") + +-- get the option menu for action: xmake config or global +function menu.options(action) + + -- check + assert(action) + + -- load all languages + local languages, errors = language.load() + if not languages then + os.raise(errors) + end + + -- load and merge all language options + local exist = {} + local results = {} + for _, instance in pairs(languages) do + + -- get menu + local menu = instance:menu() + if menu then + + -- get the options for this action + local options = menu[action] + if options then + + -- exists options? + local exists = false + for _, option in ipairs(options) do + local name = option[2] + if name and not exist[name] then + exists = true + break + end + end + + -- merge it and remove repeat if exists options + if exists then + + -- get the language option + for _, option in ipairs(options) do + + -- merge it and remove repeat + local name = option[2] + if name then + if not exist[name] then + table.insert(results, option) + exist[name] = true + end + else + table.insert(results, option) + end + end + end + end + end + end + + -- ok? + return results +end + +-- return module +return menu |
