<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://newdoor.link/index.php?action=history&amp;feed=atom&amp;title=%EB%AA%A8%EB%93%88%3AHangul</id>
	<title>모듈:Hangul - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://newdoor.link/index.php?action=history&amp;feed=atom&amp;title=%EB%AA%A8%EB%93%88%3AHangul"/>
	<link rel="alternate" type="text/html" href="https://newdoor.link/index.php?title=%EB%AA%A8%EB%93%88:Hangul&amp;action=history"/>
	<updated>2026-04-20T23:04:41Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://newdoor.link/index.php?title=%EB%AA%A8%EB%93%88:Hangul&amp;diff=3969&amp;oldid=prev</id>
		<title>Admin: 새 문서: --     한글 처리 관련 함수 모듈          josa: 자동 조사 처리 함수       this function is inspired by           hanp extension: bugzilla:13712           korean library: http://pythonhosted.org/korean/ --  local func = {}  local ustring = mw.ustring  local handata = mw.loadData('Module:Hangul/data')  -- load to local variables local final_map = handata.final_map  local final_vowel = handata.final_vowel local final_consonant = handata.final_consonant local fi...</title>
		<link rel="alternate" type="text/html" href="https://newdoor.link/index.php?title=%EB%AA%A8%EB%93%88:Hangul&amp;diff=3969&amp;oldid=prev"/>
		<updated>2022-05-21T13:23:03Z</updated>

		<summary type="html">&lt;p&gt;새 문서: --&lt;a href=&quot;/index.php?title=%ED%95%9C%EA%B8%80_%EC%B2%98%EB%A6%AC_%EA%B4%80%EB%A0%A8_%ED%95%A8%EC%88%98_%EB%AA%A8%EB%93%88_josa:_%EC%9E%90%EB%8F%99_%EC%A1%B0%EC%82%AC_%EC%B2%98%EB%A6%AC_%ED%95%A8%EC%88%98_this_function_is_inspired_by_hanp_extension:_bugzilla:13712_korean_library:_http://pythonhosted.org/korean/_--&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;한글 처리 관련 함수 모듈 josa: 자동 조사 처리 함수 this function is inspired by hanp extension: bugzilla:13712 korean library: http://pythonhosted.org/korean/ -- (없는 문서)&quot;&gt;한글 처리 관련 함수 모듈          josa: 자동 조사 처리 함수       this function is inspired by           hanp extension: bugzilla:13712           korean library: http://pythonhosted.org/korean/ --&lt;/a&gt;  local func = {}  local ustring = mw.ustring  local handata = mw.loadData(&amp;#039;Module:Hangul/data&amp;#039;)  -- load to local variables local final_map = handata.final_map  local final_vowel = handata.final_vowel local final_consonant = handata.final_consonant local fi...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
    한글 처리 관련 함수 모듈&lt;br /&gt;
    &lt;br /&gt;
    josa: 자동 조사 처리 함수&lt;br /&gt;
      this function is inspired by&lt;br /&gt;
          hanp extension: bugzilla:13712&lt;br /&gt;
          korean library: http://pythonhosted.org/korean/&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local func = {}&lt;br /&gt;
&lt;br /&gt;
local ustring = mw.ustring&lt;br /&gt;
&lt;br /&gt;
local handata = mw.loadData('Module:Hangul/data')&lt;br /&gt;
&lt;br /&gt;
-- load to local variables&lt;br /&gt;
local final_map = handata.final_map&lt;br /&gt;
&lt;br /&gt;
local final_vowel = handata.final_vowel&lt;br /&gt;
local final_consonant = handata.final_consonant&lt;br /&gt;
local final_rieul = handata.final_rieul&lt;br /&gt;
local final_unknown = handata.final_unknown&lt;br /&gt;
&lt;br /&gt;
local finalform_basic = handata.finalform_basic&lt;br /&gt;
local finalform_vowel = handata.finalform_vowel&lt;br /&gt;
local finalform_consonant = handata.finalform_consonant&lt;br /&gt;
local finalform_rieul = handata.finalform_rieul&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
-- Helper Functions&lt;br /&gt;
--[[&lt;br /&gt;
    Helper Function to interpret boolean strings. From Module:String&lt;br /&gt;
--]]&lt;br /&gt;
&lt;br /&gt;
local function getBoolean( boolean_str )&lt;br /&gt;
    local boolean_value;&lt;br /&gt;
 &lt;br /&gt;
    if type( boolean_str ) == 'string' then&lt;br /&gt;
        boolean_str = boolean_str:lower();&lt;br /&gt;
        if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0'&lt;br /&gt;
                or boolean_str == ''  or boolean_str == '아니오' then&lt;br /&gt;
            boolean_value = false;&lt;br /&gt;
        else&lt;br /&gt;
            boolean_value = true;&lt;br /&gt;
        end&lt;br /&gt;
    elseif type( boolean_str ) == 'boolean' then&lt;br /&gt;
        boolean_value = boolean_str;&lt;br /&gt;
    else&lt;br /&gt;
        error( 'No boolean value found' );&lt;br /&gt;
    end    &lt;br /&gt;
    return boolean_value&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function finalclass(str)&lt;br /&gt;
    local lastchar = ustring.match(str, '.*([%w])')&lt;br /&gt;
 &lt;br /&gt;
    if lastchar == nil then return final_unknown end&lt;br /&gt;
 &lt;br /&gt;
    if lastchar &amp;gt;= '가' and lastchar &amp;lt;= '힣' then&lt;br /&gt;
        codepoint = ustring.codepoint(lastchar)&lt;br /&gt;
        final = (codepoint - 0xAC00) % 0x1C&lt;br /&gt;
        if final == 0 then&lt;br /&gt;
            return final_vowel&lt;br /&gt;
        elseif final == 8 then&lt;br /&gt;
            return final_rieul&lt;br /&gt;
        else&lt;br /&gt;
            return final_consonant&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    return final_map[lastchar] or final_unknown&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
    사용법:&lt;br /&gt;
    {{#invoke:Hangul|josa|str= |josa = | defaultjosa = | override = | josaonly= }}&lt;br /&gt;
 &lt;br /&gt;
    str = 체언&lt;br /&gt;
    josa = 조사&lt;br /&gt;
    defaultjosa = 체언의 마지막 받침을 알 수 없는 경우에 defaultjosa 값을 쓴다.&lt;br /&gt;
    override = True/False : True이면 체언의 어미에 상관없이 defaultjosa (없다면 josa) 값을 쓴다.&lt;br /&gt;
    josaonly = True/False: True이면 체언 부분은 생략한다. (복잡한 틀 설계용)&lt;br /&gt;
    ]]&lt;br /&gt;
 &lt;br /&gt;
function func.josa(frame)&lt;br /&gt;
    local input_string = frame.args.str or frame.args[1] or ''&lt;br /&gt;
    local input_josa = frame.args.josa or frame.args[2] or ''&lt;br /&gt;
    local input_defaultjosa = frame.args.defaultjosa&lt;br /&gt;
    local override = getBoolean(frame.args.override or false)&lt;br /&gt;
    local josaonly = getBoolean(frame.args.josaonly or false)&lt;br /&gt;
 &lt;br /&gt;
    local output_josa&lt;br /&gt;
 &lt;br /&gt;
    if override then&lt;br /&gt;
        output_josa = input_defaultjosa or input_josa&lt;br /&gt;
    else&lt;br /&gt;
        local char_class = finalclass(input_string)&lt;br /&gt;
        if char_class == final_vowel then&lt;br /&gt;
            output_josa = finalform_vowel[input_josa] or input_josa&lt;br /&gt;
        elseif char_class == final_consonant then&lt;br /&gt;
            output_josa = finalform_consonant[input_josa] or input_josa&lt;br /&gt;
        elseif char_class == final_rieul then&lt;br /&gt;
            output_josa = finalform_rieul[input_josa] or input_josa&lt;br /&gt;
        else -- final_unknown&lt;br /&gt;
            output_josa = input_defaultjosa or finalform_basic[input_josa] or input_josa&lt;br /&gt;
        end&lt;br /&gt;
        -- mw.log (input_string .. '[' .. char_class .. ']' .. output_josa)&lt;br /&gt;
    end&lt;br /&gt;
 &lt;br /&gt;
    if josaonly then&lt;br /&gt;
        return output_josa&lt;br /&gt;
    else&lt;br /&gt;
        return input_string .. output_josa&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return func&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>