mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 07:00:05 +08:00
63 lines
1.9 KiB
VimL
Vendored
63 lines
1.9 KiB
VimL
Vendored
" =============================================================================
|
|
" Filename: autoload/calendar/week.vim
|
|
" Author: itchyny
|
|
" License: MIT License
|
|
" Last Change: 2017/05/07 23:07:36.
|
|
" =============================================================================
|
|
|
|
let s:save_cpo = &cpo
|
|
set cpo&vim
|
|
|
|
let s:weeks = [ 'sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday' ]
|
|
|
|
let s:cache = {}
|
|
function! calendar#week#first_day_index() abort
|
|
let first_day = calendar#setting#get('first_day')
|
|
if has_key(s:cache, first_day)
|
|
return s:cache[first_day]
|
|
endif
|
|
let index = index(s:weeks, tolower(first_day))
|
|
let s:cache[first_day] = index >= 0 ? index : 0
|
|
return s:cache[first_day]
|
|
endfunction
|
|
|
|
function! calendar#week#last_day_index() abort
|
|
return (calendar#week#first_day_index() + 6) % 7
|
|
endfunction
|
|
|
|
function! calendar#week#is_first_day(day) abort
|
|
return a:day.week() == calendar#week#first_day_index()
|
|
endfunction
|
|
|
|
function! calendar#week#is_last_day(day) abort
|
|
return a:day.week() == calendar#week#last_day_index()
|
|
endfunction
|
|
|
|
function! calendar#week#week_index(day) abort
|
|
return (a:day.week() + 7 - calendar#week#first_day_index()) % 7
|
|
endfunction
|
|
|
|
function! calendar#week#week_count(month) abort
|
|
return (a:month.last_day().sub(a:month.head_day()) + 1 + calendar#week#week_index(a:month.head_day()) + 6) / 7
|
|
endfunction
|
|
|
|
function! calendar#week#week_number(day) abort
|
|
if calendar#setting#get('first_day') =~? 'monday'
|
|
let d = a:day.year().head_day().add(3)
|
|
let diff = a:day.sub(d) + calendar#week#week_index(d)
|
|
if diff >= 0
|
|
return (diff + 7) / 7
|
|
else
|
|
let day = d.add(-4)
|
|
let d = day.year().head_day().add(3)
|
|
return (day.sub(d) + calendar#week#week_index(d) + 7) / 7
|
|
endif
|
|
else
|
|
let d = a:day.year().head_day()
|
|
return (a:day.sub(d) + calendar#week#week_index(d) + 7) / 7
|
|
endif
|
|
endfunction
|
|
|
|
let &cpo = s:save_cpo
|
|
unlet s:save_cpo
|