57 static const string_t OPTION_AS; |
57 static const string_t OPTION_AS; |
58 static const string_t OPTION_OPTION; |
58 static const string_t OPTION_OPTION; |
59 |
59 |
60 Configuration parse(const std::vector<string_t>& arguments) { |
60 Configuration parse(const std::vector<string_t>& arguments) { |
61 Configuration c; |
61 Configuration c; |
62 if (arguments.empty()) { |
62 |
63 // default set of fields: |
63 { |
64 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_PATH_ORIGINAL)); |
|
65 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_PATH_ABSOLUTE)); |
|
66 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_PATH_CANONICAL)); |
|
67 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_NAME)); |
|
68 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_TYPE)); |
|
69 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_TYPE,{L"type_a", L"type_b"})); // one field → two attributes with same value |
|
70 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_SYMLINK_TARGET_TYPE)); |
|
71 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_SYMLINK_TARGET)); |
|
72 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_SIZE)); |
|
73 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_OWNER)); |
|
74 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_GROUP)); |
|
75 // c.fields.push_back(RequestedField(RequestedField::GROUP_XATTR, L"user.xdg.origin.url")); |
|
76 } else { |
|
77 string_t currentGroup; |
64 string_t currentGroup; |
78 string_t currentName; |
65 string_t currentName; |
79 std::vector<string_t> currentAliases; |
66 std::vector<string_t> currentAliases; |
80 std::vector<string_t> currentOptions; |
67 std::vector<string_t> currentOptions; |
81 |
68 |
96 } |
83 } |
97 } |
84 } |
98 |
85 |
99 addField(c, currentGroup, currentName, currentAliases, currentOptions); // last field |
86 addField(c, currentGroup, currentName, currentAliases, currentOptions); // last field |
100 } |
87 } |
|
88 |
|
89 |
|
90 if (c.fields.empty()) { |
|
91 // default set of fields: |
|
92 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_PATH_ORIGINAL)); |
|
93 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_PATH_ABSOLUTE)); |
|
94 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_PATH_CANONICAL)); |
|
95 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_NAME)); |
|
96 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_TYPE)); |
|
97 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_TYPE,{L"type_a", L"type_b"})); // one field → two attributes with same value |
|
98 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_SYMLINK_TARGET_TYPE)); |
|
99 // c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_SYMLINK_TARGET)); |
|
100 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_SIZE)); |
|
101 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_OWNER)); |
|
102 c.fields.push_back(RequestedField(RequestedField::GROUP_FILE, FileAttributeFinder::FIELD_GROUP)); |
|
103 // c.fields.push_back(RequestedField(RequestedField::GROUP_XATTR, L"user.xdg.origin.url")); |
|
104 } |
|
105 |
101 return c; |
106 return c; |
102 } |
107 } |
103 |
108 |
104 virtual ~CLIParser() { |
109 virtual ~CLIParser() { |
105 } |
110 } |