Detailed Description
The principles and spirit of the present invention will be described with reference to a number of exemplary embodiments. It is understood that these embodiments are given solely for the purpose of enabling those skilled in the art to better understand and to practice the invention, and are not intended to limit the scope of the invention in any way. Rather, these embodiments are provided so that this disclosure will be thorough and complete, and will fully convey the scope of the disclosure to those skilled in the art.
As will be appreciated by one skilled in the art, embodiments of the present invention may be embodied as a system, apparatus, device, method, or computer program product. Accordingly, the present disclosure may be embodied in the form of: entirely hardware, entirely software (including firmware, resident software, micro-code, etc.), or a combination of hardware and software.
According to the embodiment of the invention, a file annotation method, a storage medium, a device and a computing device are provided.
In this document, any number of elements in the drawings is by way of example and not by way of limitation, and any nomenclature is used solely for differentiation and not by way of limitation.
The principles and spirit of the present invention are explained in detail below with reference to several representative embodiments of the invention.
Summary of The Invention
One of the purposes of the embodiment of the application is to establish an annotation processing scheme based on module mapping, create a mapping table of module information and annotation content, and automatically add annotations by using the created mapping table in the file processing process, so as to realize unified processing of the annotation content. Taking the annotation content including the information of the responsible person as an example, through the processing, the information of the responsible person can be implemented in the actual production of the files, each file is guaranteed to be maintained by the corresponding responsible person, and when a problem occurs, the relevant responsible person can be quickly determined according to the information in the annotation to perform problem processing. In addition, based on the concept of the embodiment of the application, the development can be helped to generate the annotation which meets the specification, the uniform annotation format is used, the readability of the file is improved, the annotation processing process is simplified, and the burden of operators is reduced.
Having described the basic idea of the invention, various non-limiting embodiments of the invention are described in detail below.
Exemplary method
A file annotation method according to an exemplary embodiment of the present invention is described below with reference to fig. 1.
Fig. 1 schematically shows a flowchart of an implementation of a file annotation method according to an embodiment of the present application, the method comprising the steps of:
s101, obtaining module information of a file to be processed according to a module matching rule;
s102, obtaining annotation information corresponding to the module information based on the module information and a first mapping file, wherein the first mapping file comprises a corresponding relation between at least one module information and at least one annotation information;
s103, performing annotation processing on the file to be processed by using the acquired annotation information.
The embodiment of the application has a mapping file, the mapping file stores the corresponding relationship between the module information and the annotation information, for a file which needs to be annotated (for example, a new annotation or an updated annotation is made to a JAVA file), the module information of the file to be annotated can be obtained according to a preset rule, the annotation information corresponding to the module information can be determined according to the mapping file, and the annotation processing can be completed by using the obtained annotation information.
By utilizing the embodiment of the application, an operator can configure the mapping file in advance according to requirements, and can add required annotation information through the mapping file in the file processing process, so that the annotation content can be automatically processed, especially important annotation content (such as information of responsible persons, file creation date and the like) can be uniformly added into the file, and the operator does not need to manually add the annotation content one by one, so that the file annotation mechanism is light, the burden of personnel can be reduced, and the file processing efficiency is improved.
According to an embodiment of the present application, optionally, the obtaining of the module information of the file to be processed according to the module matching rule may be implemented by:
s201, determining a packet name prefix of the file to be processed in a regular expression matching mode;
s202, determining a first module name after the packet name prefix as the module information, when there is a module name after the packet name prefix, or when there is a module name and at least one sub-packet name after the packet name prefix.
For example, according to the package name naming rule of the file, the package name may be "com. According to the naming rule, a packet name prefix in the file packet name can be determined by using a regular expression matching mode, and then the first module name behind the packet name prefix is used as module information required in the embodiment of the application.
It should be noted that there may be only one module name after the packet name prefix, and there may also be one module name and at least one sub-packet name. For the former, the module name after the package name prefix is taken as module information; for the latter, the first module name after the packet name prefix is used as module information, and the rest sub-packet names are ignored. That is, the module information in the embodiment of the present application takes the first module name after the package name prefix. The specific form of the regular expression can be determined according to the package name form of the file to be processed, and the embodiment of the present application is not particularly limited thereto.
According to an embodiment of the present application, optionally, the performing annotation processing on the file to be processed by using the obtained annotation information includes at least one of:
(1) based on the obtained annotation information, establishing an annotation in the file to be processed;
(2) under the condition that the file to be processed already contains at least one piece of annotation information, extracting the at least one piece of annotation information, and adding the extracted at least one piece of annotation information and the obtained annotation information into the file to be processed;
(3) under the condition that at least one piece of annotation information is already contained in the file to be processed, updating the at least one piece of annotation information based on the acquired annotation information;
(4) and adding the acquired annotation information into the file to be processed under the condition that the file to be processed already contains at least one annotation information.
The embodiment of the application can be used for realizing various annotation processes, wherein the step (1) is to newly create an annotation, namely, the obtained annotation information is newly added into a file, for example, the information of the person responsible is newly added into the code in an annotation form, so that the person responsible can be quickly positioned when the code has a problem;
in the above (2), in order to extract the existing annotation information and add an annotation, for example, the information of the code creation time in the annotation, but the format of the annotation is not standardized, the information of the code creation time can be extracted by executing the steps of the embodiment of the present application, and is added back to the code annotation in the standardized format, and simultaneously, the obtained other annotation information can be added to the code annotation together;
the above (3) is to update the annotation, for example, after the mapping relationship is updated, the existing annotation content can be updated by executing the steps of the embodiment of the present application, so as to ensure that the annotation information is accurate;
in the above (4) to add a comment, for example, information of a responsible person already in an original code file, other comment information (for example, author name, code creation time, etc.) can be added to the comment in the code file by performing the steps of the embodiment of the present application, so that the comment information is completely traceable.
According to the embodiment of the application, optionally, before the module information of the file to be processed is obtained according to the module matching rule, a process of performing annotation processing on the file to be processed is triggered and executed in response to a preset function control selected in an operation interface of the file to be processed.
That is, the operator may trigger the processing procedure of code annotation in the embodiment of the present application by triggering the function control, for example, a button may be set on the operation interface of the file, and after the operator clicks the button, the background starts to execute the processing procedures of S101 to S103, where after obtaining the annotation information, any one or more of the annotation processes in the above (1) to (4) may be executed.
According to an embodiment of the present application, optionally, the performing annotation processing on the file to be processed by using the obtained annotation information further includes: and formatting the annotation information in the file to be processed. The formatting processing of the annotation information can help developers to establish standard annotations, and a correct annotation label (TAG) is used, so that good programming habits can be developed, the formation of code documentation is promoted, and the code readability is improved.
According to an embodiment of the present application, optionally, before obtaining the module information of the file to be processed according to the module matching rule, the method further includes: configuring the first mapping file using a property tool.
First, briefly describing the Properties tool, which may also be referred to as a property file, is a common configuration file, and batch flexible modification of parameters in the code can be realized by modifying the Properties configuration file. The method and the device for configuring the mapping file (such as the mapping table) have the advantages that the mapping file (such as the mapping table) is configured by using the Properties tool, flexible control over the code annotation content can be achieved through updating and maintaining the mapping table, developers can set relevant parameters in batches without the codes, for example, the Properties file is arranged in a JAVA file, parameter configuration is carried out in a key value pair mode, code maintenance cost can be reduced, and development efficiency is improved.
According to an embodiment of the present application, optionally, before or after the obtaining of the annotation information corresponding to the module information based on the module information and the first mapping file, the method further includes: updating the first mapping file periodically or aperiodically.
According to an embodiment of the present application, optionally, the annotation information includes at least one of: person of responsibility information, author information, time information and file description information.
By using at least one of the above embodiments of the present application, after an operator triggers the file annotation processing process of the embodiments of the present application, module information of a file may be determined by matching the prefix of the package name, and then corresponding annotation information (including a corresponding relationship between the module information and the annotation information in the mapping table) may be queried in a pre-configured mapping table, and based on this, annotation processing is performed on a file code, such as adding an annotation, updating an annotation, adding an annotation, and the like, so that the annotation information of the file is complete, up-to-date, and standard in format, which facilitates long-term maintenance of the file.
The implementation of the file annotation method in the embodiments of the present application is described above through the embodiments, and the implementation process in the embodiments of the present application is described below from multiple angles through multiple examples.
I. Configuration files for annotation information
Taking the information of the responsible person in the annotation information as an example, in one embodiment of the present application, a "configuration file of the information of the responsible person" may be configured in advance to form a mapping table. For example, the responsible person information may be configured in a "Properties" file, and each module information and corresponding responsible person information are recorded in a Key-Value pair (Key-Value) form, so as to generate a mapping table, where Key is specific module information and Value is specific responsible person information. And in the later period, if the information of the person in charge changes, the configuration file (the information configuration file of the person in charge) can be modified, the mapping information is updated to the latest 'module-person in charge' information, and the information of the person in charge in the file annotation can be added or updated in batch on the basis of the latest information of the person in charge.
Similarly, a configuration file of other annotation information (e.g., time information, author information, document description information, etc.) may be set and updated periodically or as needed to ensure that the information in the configuration file is accurate.
On module matching rules
In one embodiment of the present application, the Module information of the code file may be extracted by matching the packet name with a regular expression (for convenience of description, the Module information is hereinafter referred to as "Module information", and the comment information is referred to as "frame information").
For example, according to Java programming specifications, developers should add a unique prefix before a defined package name, one way to add is to have the company domain name as the unique prefix for the package name of the package, e.g., the package name may be in the format of "com.
·com.netease.nr.biz
·com.netease.newsreader
·com.netease.newsreader.activity
·com.netease.newsreader.newarch
·com.netease.newsreader.newarch.news
·com.netease.newsreader.common
·com.netease.newsreader.common.player
·com.netease.newsreader.thirdsdk.api
In one embodiment of the present application, the module matching rule may be: the last bit of the packet name prefix is the Module information.
Exemplarily, taking the packet name "com.
Further, for a sub-packet under the player packet, a Module belonging to the player packet is used, and for this, the next item of the packet name prefix (i.e. the first item after the packet name prefix) "player" is still taken as the Module information of the sub-packet.
The matching rules are used for determining Module information, namely, a Key in an annotation information configuration file (such as a responsible person information configuration file and responsible person mapping information) is determined, Value (i.e., frame information) corresponding to the Module information can be determined by inquiring the configuration file, and the frame information can be added to the code annotation or the code annotation is updated in the annotation batch processing process.
For example, in one embodiment of the present application, default frame information may be set for some types of files, and if a user customizes the frame information during file processing, the customized frame information should not be destroyed, i.e., reset, during annotation batch processing.
For example, according to the related encoding specification, some items of files must specify responsible persons, such as news items, and corresponding responsible person information must exist in each file of the news item, and default responsible person information can be set for the responsible persons, assuming that the default responsible person is "zhang san"; if the user customizes the person in charge, for example, the person in charge is set to lie four, the user-defined information of the person in charge is not changed when the annotation is processed in batch next time, that is, the information of the person in charge is not reset from lie four to lie three.
Based on the above, the process of determining Module information in one embodiment of the present application is described below with reference to fig. 3.
The Package names of the application programs are used as the raw data of the Module information, and a 'qualified Package name Package matching pool' is established based on the raw data, and a plurality of qualified or specified Package name information is maintained in the matching pool (as shown in the middle box in the embodiment of fig. 3).
According to the Module matching rule provided at the point II, when Module information of a file to be processed needs to be determined, the packet name of the file to be processed (as shown in the box on the left side of the embodiment in fig. 3) is filtered by using a regular expression matching method, and the Module information of the file to be processed (the first Module name after the prefix of the packet name) can be obtained. Illustratively, the regular expression may be, for example, "(| \) (#. In the embodiment of fig. 3, the Module information of the multiple pending files is respectively: test1, test2, test3, etc., as shown in the box on the right side of the embodiment of FIG. 3.
Based on the above, the following describes a process of configuring a annotation information configuration file, i.e., a mapping table, in an embodiment of the present application with reference to fig. 4.
A mapping table of annotation information about a module's responsible person and the like is created in the form of Key-Value, as shown in the middle box in the embodiment of FIG. 4. And querying a mapping table by using the Module information to be queried as a keyword to find the mapping information.
Taking a Java file as an example, the frame information corresponding to "test 1" needs to be queried, the file can be read through bufferedreder, a mapping table is loaded through an API interface related to Java.
Fig. 5 shows a file annotation process flow diagram according to an embodiment of the present application, in particular:
firstly, obtaining Module information of a file to be processed, such as a Java code document;
then, the Module information is used for inquiring the mapping table, and the frame information corresponding to the Module information can be determined;
the loading mapping table is a Properties file, so that annotation can be conveniently processed in batches;
if the Java code has the annotation, the original document annotation information can be analyzed through a PSI (Program Structure Interface) syntax tree and used as an annotation node;
if the original frame information is different from the frame information obtained by inquiring the mapping table, updating the frame information, and replacing the original frame information by using the frame information obtained by inquiring the mapping table; otherwise, if the original frame information in the Java code is the same as the frame information obtained by querying the mapping table, the original frame information is not replaced;
after the frame information is updated, the code style can be updated through a CodestylEmanager (a code style manager) so that the code format style is consistent; in addition, the local Cache 'Git Cache' can be refreshed to prevent Git version management errors.
In operation, an "annotation batch processing" function control may be added to the operation panel, and when the function control is selected, the annotation processing method according to the embodiment of the present application may be triggered to be executed, where the annotation processing may include multiple types of events, and the following schematically lists four types of annotation processing events:
a) NEW _ COMMENT: newly generating annotation information;
b) EXTRACT _ measure: extracting information from the existing annotations automatically generated by the system, and adding module/responsible person information;
c) UPDATE _ BLAME: updating module/responsible person information;
d) ADD _ BLAME: add module/responsible person information to the existing annotations.
Based on the event types of the above four annotation processes, as an example, the corresponding annotation manner is briefly described below:
● generating responsible person annotations
Clicking a right button in the target file, selecting 'annotation batch processing', and automatically generating the information of the responsible person according with the annotation specification.
● extracting the responsible person annotation
Clicking a right button in the target file, selecting 'annotation batch processing', and if some annotation information automatically generated by the system exists in the target file, extracting and generating information conforming to annotation specifications by using a 'annotation batch processing' function.
● adding information of responsible person
Clicking a right button in the target file, selecting 'annotation batch processing', if part of annotation information exists in the target file, using an 'annotation batch processing' function to retain the existing annotations, adding related annotation information of a responsible person and/or a module, and after processing, formatting the annotations to ensure standard tag sequencing.
● updating the responsible person information
Clicking a right key in the target file, selecting 'annotation batch processing', if the information of the person responsible for the target file is changed, updating the annotation information into the latest information of the person responsible for the target file by using the 'annotation batch processing' function, and after the update, changing the information of the person responsible for the target file into the latest information.
The above describes the process of performing "annotation batching" on a copy of a target file. In addition, in some embodiments, a "batch annotation process" may be performed on multiple files (e.g., multiple Java files belonging to the same business project), for example, batch process accountant information, and batch annotation of the accountant information may be performed on Java files in which mapping files have been established in the whole project by means of batch process. It should be noted that, because batch annotation processing is time-consuming, the information annotation of the responsible person of each file is not changed before the batch processing is completed, and after the annotation processing of each file of the whole project is completed, the information of the responsible person is displayed as the latest information.
A log may be generated for each of the above processes, and the log may contain information of the annotation process.
Fig. 6 and 7 schematically show schematic diagrams before and after a document code is subjected to annotation processing by the method of the embodiment of the application. Referring to the area indicated by the arrow in the figure, a state diagram for triggering the "annotation batch processing" control is shown in fig. 6, and it is noted that there is a sentence of annotation content in the document: "Created by liyuundeng on 17/7/7". The embodiment of fig. 7 shows annotation information after the method of the embodiment of the present application is performed, and the annotation information includes four items: author, module, blame, nonce.
Specifically, according to the package name package shown in the first row of the document in the embodiment of fig. 7, where the package name prefix is "com. The author and the nonce in the annotation are information extracted from the original annotation, formatted, and added back to the annotation, and appear as the standard annotation in fig. 7.
By utilizing at least one embodiment of the application, an annotation processing mechanism based on module mapping can be constructed, a responsible person module mapping table is established, developers can be helped to establish standard file annotation, the responsible person mechanism is favorably implemented in files and actual production, each file is guaranteed to be maintained by a corresponding responsible person, and when problems occur, related responsible persons can be quickly found according to information in the annotation to carry out problem processing. The annotation processing scheme based on module mapping can promote the formation of code documentation, improve the code documentation processing efficiency and improve the code readability.
Exemplary Medium
Having described the method of the exemplary embodiment of the present invention, the medium of the exemplary embodiment of the present invention will next be described with reference to fig. 8.
In some possible embodiments, aspects of the present invention may also be implemented as a computer-readable medium on which a program is stored, which, when executed by a processor, is for implementing the steps in the file annotation method according to various exemplary embodiments of the present invention described in the "exemplary methods" section above of this specification.
Specifically, the processor is configured to implement the following steps when executing the program:
obtaining module information of the file to be processed according to the module matching rule;
acquiring annotation information corresponding to the module information based on the module information and a first mapping file, wherein the first mapping file comprises a corresponding relation between at least one piece of module information and at least one piece of annotation information;
and performing annotation processing on the file to be processed by using the acquired annotation information.
It should be noted that: the above-mentioned medium may be a readable signal medium or a readable storage medium. The readable storage medium may be, for example but not limited to: an electrical, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination thereof. More specific examples (a non-exhaustive list) of the readable storage medium include: an electrical connection having one or more wires, a portable disk, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
As shown in fig. 8, a medium 60, which may employ a portable compact disc read only memory (CD-ROM) and include a program and may be run on a device, according to an embodiment of the present invention is described. However, the invention is not limited in this respect, and in this document, a readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
A readable signal medium may include a propagated data signal with readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated data signal may take a variety of forms, including, but not limited to: an electromagnetic signal, an optical signal, or any suitable combination of the foregoing. A readable signal medium may also be any readable medium that is not a readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
Program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, C + + or the like and conventional procedural programming languages, such as the "C" programming language or similar programming languages. The program code may execute entirely on the user computing device, partly on a remote computing device, or entirely on the remote computing device or server. In the case of a remote computing device, the remote computing device may be connected to the user computing device through any kind of network, including a Local Area Network (LAN) or a Wide Area Network (WAN).
Exemplary devices
Having described the storage medium of an exemplary embodiment of the present invention, the apparatus of an exemplary embodiment of the present invention is described next with reference to fig. 9.
As shown in fig. 9, thefile annotation apparatus 100 according to the embodiment of the present application may include:
a moduleinformation obtaining module 110, configured to obtain module information of a file to be processed according to a module matching rule;
a comment information obtaining module 120, configured to obtain comment information corresponding to the module information based on the module information and a first mapping file, where the first mapping file includes a correspondence between at least one piece of module information and at least one piece of comment information;
and the annotation processing module 130 is configured to perform annotation processing on the file to be processed by using the obtained annotation information.
According to the file annotation device in the embodiment of the present application, as shown in fig. 10, optionally, the moduleinformation obtaining module 110 includes:
the packet name prefix determining submodule 111 is configured to determine a packet name prefix of the file to be processed in a regular expression matching manner;
a module information determining sub-module 112, configured to determine, as the module information, a first module name after the packet name prefix if the packet name prefix is followed by a module name, or if the packet name prefix is followed by a module name and at least one sub-packet name.
According to the file annotation device of the embodiment of the application, optionally, the annotation processing module includes at least one of:
the first annotation processing submodule is used for establishing an annotation in the file to be processed based on the acquired annotation information;
the second annotation processing submodule is used for extracting at least one piece of annotation information under the condition that the file to be processed already contains the at least one piece of annotation information, and adding the extracted at least one piece of annotation information and the obtained annotation information into the file to be processed;
a third annotation processing submodule, configured to, in a case that the file to be processed already contains at least one piece of annotation information, update the at least one piece of annotation information based on the obtained annotation information;
and the fourth annotation processing submodule is used for adding the acquired annotation information into the file to be processed under the condition that the file to be processed already contains at least one annotation information.
According to the file annotation device in the embodiment of the present application, optionally, the annotation processing module further includes: and the formatting processing submodule is used for formatting the annotation information in the file to be processed.
According to the file annotation device of the embodiment of the application, optionally, the file annotation device further includes: a configuration module for configuring the first mapping file using a property tool.
According to the file annotation device of the embodiment of the application, optionally, the file annotation device further includes: an update module to update the first mapping file periodically or aperiodically.
According to the file annotation device of the embodiment of the application, optionally, the annotation information includes at least one of: person of responsibility information, author information, time information and file description information.
According to the file annotation device of the embodiment of the application, optionally, the file annotation device further includes: and the triggering module is used for responding to the selection of a preset function control in the operation interface of the file to be processed and triggering and executing the process of performing annotation processing on the file to be processed.
Exemplary computing device
Having described the methods, storage media, and apparatus of exemplary embodiments of the invention, a computing device of exemplary embodiments of the invention is now described with reference to FIG. 11.
As will be appreciated by one skilled in the art, aspects of the present invention may be embodied as a system, method or program product. Thus, various aspects of the invention may be embodied in the form of: an entirely hardware embodiment, an entirely software embodiment (including firmware, microcode, etc.) or an embodiment combining hardware and software aspects that may all generally be referred to herein as a "circuit," module "or" system.
In some possible implementations, a computing device according to an embodiment of the invention may include at least one processing unit and at least one memory unit. Wherein the storage unit stores program code which, when executed by the processing unit, causes the processing unit to perform the steps in the file annotation methods according to various exemplary embodiments of the present invention described in the "exemplary methods" section above in this specification.
Acomputing device 80 according to this embodiment of the invention is described below with reference to fig. 11. Thecomputing device 80 shown in fig. 11 is only one example and should not impose any limitations on the functionality or scope of use of embodiments of the application.
As shown in fig. 11,computing device 80 is embodied in the form of a general purpose computing device. Components ofcomputing device 80 may include, but are not limited to: the at least oneprocessing unit 801 and the at least onememory unit 802, and abus 803 connecting the various system components (including theprocessing unit 801 and the memory unit 802).
Thebus 803 includes a data bus, a control bus, and an address bus.
Thestorage unit 802 may include readable media in the form of volatile memory, such as Random Access Memory (RAM)8021 and/orcache memory 8022, and may further include readable media in the form of non-volatile memory, such as Read Only Memory (ROM) 8023.
Storage unit 802 can also include a program/utility 8025 having a set (at least one) ofprogram modules 8024,such program modules 8024 including, but not limited to: an operating system, one or more application programs, other program modules, and program data, each of which, or some combination thereof, may comprise an implementation of a network environment.
Computing device 80 may also communicate with one or more external devices 804 (e.g., keyboard, pointing device, etc.). Such communication may be through input/output (I/O) interfaces 805. Moreover,computing device 80 may also communicate with one or more networks (e.g., a Local Area Network (LAN), a Wide Area Network (WAN), and/or a public network, such as the internet) vianetwork adapter 806. As shown in fig. 11, anetwork adapter 806 communicates with the other modules of thecomputing device 80 via thebus 803. It should be understood that although not shown in the figures, other hardware and/or software modules may be used in conjunction withcomputing device 80, including but not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data backup storage systems, among others.
It should be noted that although in the above detailed description several units/modules or sub-units/modules of the file annotation device are mentioned, such a division is merely exemplary and not mandatory. Indeed, the features and functionality of two or more of the units/modules described above may be embodied in one unit/module according to embodiments of the invention. Conversely, the features and functions of one unit/module described above may be further divided into embodiments by a plurality of units/modules.
Moreover, while the operations of the method of the invention are depicted in the drawings in a particular order, this does not require or imply that the operations must be performed in this particular order, or that all of the illustrated operations must be performed, to achieve desirable results. Additionally or alternatively, certain steps may be omitted, multiple steps combined into one step execution, and/or one step broken down into multiple step executions.
While the spirit and principles of the invention have been described with reference to several particular embodiments, it is to be understood that the invention is not limited to the disclosed embodiments, nor is the division of aspects, which is for convenience only as the features in such aspects may not be combined to benefit. The invention is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims.