diff --git a/src/ezic.erl b/src/ezic.erl index 53e4780..16521da 100644 --- a/src/ezic.erl +++ b/src/ezic.erl @@ -9,6 +9,7 @@ , next_timechange_after/2 ]). + -export([ load/1 , dev/0 @@ -28,11 +29,6 @@ localtime(TzName) -> utc_to_local(erlang:universaltime(), TzName). -%% utc_to_local(UTCDatetime, TzName) -> -%% {ok, Zone, Rule}= current_as_of_utc(UTCDatetime, TzName), -%% SecDiff= time_offset(Zone, Rule), -%% ezic_date:add_seconds(UTCDatetime, SecDiff). - utc_to_local(UTCDatetime, TzName) -> NormalDatetime= ezic_date:normalize(UTCDatetime, u), @@ -78,14 +74,8 @@ load(Folder) -> dev() -> -% ezic:load(filename:join("priv","tzdata")), -% ezic_flatten:flatten(), -% Zones= ezic_db:zones("WET"), -% ezic_flatten:flatten_all_zones(Zones), - application:start(ezic), ezic_db:flatzone({{2010,11,17}, #tztime{time={23,42,0}}}, "America/Los_Angeles"), - ok. zf() -> @@ -111,22 +101,3 @@ test() -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % PRIVATE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - -%current_as_of_utc(UTCDatetime, TzName) -> -% CZone= ezic_zone:current_as_of_utc(UTCDatetime, TzName), -% RuleName= CZone#zone.rule, -% Rules= ezic_db:rules(RuleName), -% CRule= ezic_rule:current_as_of_utc(UTCDatetime, Rules), -% {ok, CZone, CRule}. - - -%%current_as_of_local(Datetime, TzName) -> -%% not_done. - - -%time_offset(Zone, Rule) -> -% OffsetSec= ezic_zone:offset_sec(Zone), -% DSTSec= ezic_rule:dst_sec(Rule), -% OffsetSec + DSTSec. - diff --git a/src/ezic_db_ets.erl b/src/ezic_db_ets.erl index 814fea7..06a14f2 100644 --- a/src/ezic_db_ets.erl +++ b/src/ezic_db_ets.erl @@ -99,7 +99,7 @@ create_tables(Filename) -> true = ets:insert(rule, Rules), ets:new(flatzone, [duplicate_bag, named_table]), - io:format("~p~n", [Rules]), + %% io:format("~p~n", [Rules]), FlatZones = ezic_flatten:flatten(Zones, Rules), true = ets:insert(flatzone, FlatZones), diff --git a/src/ezic_flatten.erl b/src/ezic_flatten.erl index 56a66e1..7b5a1ad 100644 --- a/src/ezic_flatten.erl +++ b/src/ezic_flatten.erl @@ -77,7 +77,7 @@ flatten_all_zones(AllZones, AllRules) -> flatten_all_zones([], _AllRules, FlatZones) -> FlatZones; flatten_all_zones([Z1|_]= AllZones, AllRules, FlatZones) -> - io:format("Flattening zones: ~s~n", [Z1#zone.name]), + %% io:format("Flattening zones: ~s~n", [Z1#zone.name]), {CurrentZones, RestZones}= ezic_zone:split_by_name(Z1, AllZones), Flats= flatten_zone_set(CurrentZones, AllRules), diff --git a/src/ezic_loader.erl b/src/ezic_loader.erl index f3412a3..f0fdc6a 100644 --- a/src/ezic_loader.erl +++ b/src/ezic_loader.erl @@ -9,30 +9,15 @@ load() -> load(?TZDIR). -%% returns all records, parsed from the tzdata files. -load(File) -> +%% returns all records, parsed from the tzdata files in directory Dir. +load(Dir) -> {ok, Records} = - case filelib:is_dir(File) of - true -> {ok, parse_dir(File)}; - false -> erlang:error(not_done) - - %% case filelib:is_regular(File) of - %% true -> {ok, parse_file(File)}; - %% false -> erlang:error(badFile, File) - %% end + case filelib:is_dir(Dir) of + true -> {ok, parse_dir(Dir)}; + false -> erlang:error({not_a_directory, Dir}) end, Records. - - %% {ok, Zones, Rules, Leaps, Links} = ezic_record:separate(Records), - - %% ezic_db:wipe(), - %% ezic_db:init(), - - %% ezic_db:insert_all(Zones), - %% ezic_db:insert_all(Rules), - %% ezic_db:insert_all(Leaps), - %% ezic_db:insert_all(Links). @@ -43,18 +28,17 @@ load(File) -> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - % returns a list of tzdata records for all files in folder % note: assumes every file in the folder is a tzdata file -parse_dir(Folder) -> - {ok, Files} = file:list_dir(Folder), - lists:flatten([ parse_file(filename:join(Folder,File)) || File <- Files ]). +parse_dir(Dir) -> + {ok, Files} = file:list_dir(Dir), + lists:flatten([ parse_file(filename:join(Dir,File)) || File <- Files ]). % returns a list of tzdata records from file parse_file(File) -> + %% io:format("Parsing File: ~p~n", [File]), {ok, FD} = file:open(File, [read]), parse_lines(file:read_line(FD), FD, []). @@ -75,6 +59,7 @@ parse_lines({ok, Line}, File, Records) -> % the Line has data, so we parse it, build a record, and return it parse_to_record(Line, _, Records) -> + %% io:format(" Parsing Line: ~p~n", [Line]), [Type | Data] = string:tokens(Line, " \t"), {ok, PrevType, PrevName} = prev_rec_type(Records), {ok, Record} = build_record(Type, Data, {PrevType, PrevName}), @@ -100,7 +85,7 @@ clean_line(Line) -> Line2= string:strip(Line1, both, $\n), Line3= string:strip(Line2, both, $\t), - %% remove comments and return + %% remove comments and returns FinalLine=Line3, CPos= string:chr(FinalLine, $#), case CPos of