~~Title: EFL Reference~~
{{page>:develop:api-include:reference:general&nouser&nolink&nodate}}
+====== Python-EFL documentation preview ======
+This is just a work in progress for the future development of the
+Python-EFL Unified API.
+
+Pratically there is nothing python related currently in this documentation,
+so it can be considered valid for all languages.
+
+
+^** Some numbers just for information **^^
+<!--(for label, val in totals)-->
+| ${label}$ | **${val}$** |
+<!--(end)-->
+
+
<!--(for ns in nspaces)-->
- <!--(if ns.name.startswith('Efl'))-->
-===== ${ns.name}$ =====
+===== ${ns.name}$ (namespace) =====
- <!--(for i, cls in enumerate(ns.regulars))-->
- <!--(if i == 0)-->
-^ Classes ^^
- <!--(end)-->
-| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ |
+ <!--(for i, cls in enumerate(sorted(ns.regulars)))-->
+ <!--(if i == 0)-->
+^ Regular Classes ^^
<!--(end)-->
-#!
- <!--(for i, cls in enumerate(ns.interfaces))-->
- <!--(if i == 0)-->
-^ Interfaces ^^
- <!--(end)-->
| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ |
+ <!--(end)-->
+#!
+ <!--(for i, cls in enumerate(sorted(ns.abstracts)))-->
+ <!--(if i == 0)-->
+^ Abstract Classes ^^
<!--(end)-->
+| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ |
+ <!--(end)-->
#!
- <!--(for i, cls in enumerate(ns.mixins))-->
- <!--(if i == 0)-->
+ <!--(for i, cls in enumerate(sorted(ns.mixins)))-->
+ <!--(if i == 0)-->
^ Mixins ^^
- <!--(end)-->
+ <!--(end)-->
| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ |
+ <!--(end)-->
+#!
+ <!--(for i, cls in enumerate(sorted(ns.interfaces)))-->
+ <!--(if i == 0)-->
+^ Interfaces ^^
<!--(end)-->
+| ${CLS_LINK}$ | ${BEST_SUMMARY(obj=cls)}$ |
+ <!--(end)-->
#!
- <!--(for i, typedecl in enumerate(ns.aliases))-->
- <!--(if i == 0)-->
+ <!--(for i, typedecl in enumerate(sorted(ns.aliases)))-->
+ <!--(if i == 0)-->
^ Aliases ^^
- <!--(end)-->
-| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ |
<!--(end)-->
+| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ |
+ <!--(end)-->
#!
- <!--(for i, typedecl in enumerate(ns.structs))-->
- <!--(if i == 0)-->
+ <!--(for i, typedecl in enumerate(sorted(ns.structs)))-->
+ <!--(if i == 0)-->
^ Structures ^^
- <!--(end)-->
-| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ |
<!--(end)-->
+| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ |
+ <!--(end)-->
#!
- <!--(for i, typedecl in enumerate(ns.enums))-->
- <!--(if i == 0)-->
+ <!--(for i, typedecl in enumerate(sorted(ns.enums)))-->
+ <!--(if i == 0)-->
^ Enumerations ^^
- <!--(end)-->
-| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ |
<!--(end)-->
-
+| ${TYPEDECL_LINK}$ | ${BEST_SUMMARY(obj=typedecl)}$ |
<!--(end)-->
+
<!--(end)-->
# render the main start.txt page
if args.step in ('start', None):
t = Template('doc_start.template')
+
+ nspaces = [ ns for ns in eolian_db.all_namespaces
+ if ns.name.startswith(args.namespace) ]
+
+ tot_classes = tot_regulars = tot_abstracts = tot_mixins = tot_ifaces = 0
+ for ns in nspaces:
+ for cls in ns.classes:
+ tot_classes += 1
+ if cls.type == eolian.Eolian_Class_Type.REGULAR:
+ tot_regulars += 1
+ elif cls.type == eolian.Eolian_Class_Type.ABSTRACT:
+ tot_abstracts += 1
+ elif cls.type == eolian.Eolian_Class_Type.MIXIN:
+ tot_mixins += 1
+ elif cls.type == eolian.Eolian_Class_Type.INTERFACE:
+ tot_ifaces += 1
+ totals = [
+ ('Namespaces', len(nspaces)),
+ ('ALL Classes', tot_classes),
+ ('Regular classes', tot_regulars),
+ ('Abstract classes', tot_abstracts),
+ ('Mixins', tot_mixins),
+ ('Interfaces', tot_ifaces),
+ ]
+
output_file = os.path.join(args.root_path,'data','pages','develop','api','start.txt')
- t.render(output_file, args.verbose, nspaces=eolian_db.all_namespaces)
+ t.render(output_file, args.verbose, nspaces=nspaces, totals=totals)
+
# render a page for each Class
if args.step in ('classes', None):
return self.name == other
return False
+ def __gt__(self, other):
+ if isinstance(other, EolianBaseObject):
+ if hasattr(self, 'full_name'):
+ return self.full_name > other.full_name
+ elif hasattr(self, 'name'):
+ return self.name > other.name
+
def __hash__(self):
return self._obj.value
return "<eolian.Namespace '{0._name}'>".format(self)
def __eq__(self, other):
- return self.name == other.name
+ if isinstance(other, Namespace):
+ return self.name == other.name
+ if isinstance(other, str):
+ return self.name == other
+ raise TypeError('Namespace can only compare with Namespace or str')
def __lt__(self, other):
return self.name < other.name
c.namespace == self._name]
@property
+ def abstracts(self):
+ return [ c for c in self._unit.all_classes
+ if c.type == Eolian_Class_Type.ABSTRACT and
+ c.namespace == self._name]
+
+ @property
def mixins(self):
return [ c for c in self._unit.all_classes
if c.type == Eolian_Class_Type.MIXIN and